تبليغاتX
تنهاترینم...

تنهاترینم...

farsitex


 

نوشته شده توسط در یکشنبه سوم شهریور 1387 ساعت 8:43 موضوع | لینک ثابت


 شبهای مهتابی و پاک، خاطرش

                      توی کوچه دلم قدم میزنه

  نسیم خاطره هاش مثل باد پائیزی

                     برگهای خاطرامو به بازی می گیره

  گاهی، غبار رد پاهاش

                   اشک چشمامو در میاره

  با اشک چشمام

                   اب می پاشم، تا دوباره غبار نباشه

  جاروش می کنم

                   تاصفامو ببینه

                                                 فرشی می ندازم

                                                 تا غریب نباشه 


 

نوشته شده توسط در پنجشنبه بیست و ششم مهر 1386 ساعت 11:30 موضوع | لینک ثابت


آموزش برنامه نویسی

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

Var y۱,y۲:real;
St۱,st۲ : string;
Y۱:=۳۵۲.۷۶۸
Y۲:=۴۷۶.۳۹۵
Str(y۱:۷:۲,st۱);
Str(y۲:۳:۱,st۲);

با اجراي دستور str اول مقدار ۳۵۲.۷۶۸ به رشته ‘۳۵۲.۷۶۸′ تبديل ميشود و در st۱ قرار ميگيرد و با اجراي دستورstr دوم مقدار ۴۷۶.۳۹۵ به رشته ‘۴۷۶.۳۹۵′تبديل ميشود و در st۲ قرار ميگيرد.
جدا كردن زيررشته اي از رشته:
زيررشته بخشي از رشته است و براي جدا كردن زيررشته از رشته از تابع copy استفاده ميشودتابع copy به صورت زير به كار ميرود.

Copy (source,index,size)
S:=’I am learning pascal ‘;
S۱:=copy(s,۱۵,۶);

دستور copy باعث ميگردد تا با شروع از محل ۱۵ تعداد ۶ كاراكتر از رشته s استخراج شود و در s۱ قرار گيرد. بنابراين محتويات رشته s۱ برابر است با ‘pascal’.
الحاق رشته ها :
منظور از الحاق رشته ها اتصال رشته ها به يكديگر است به عنوان مثال اگرs۱:=’ab’ و s۲:=’cde’ الحاق دو رشته (s۱,s۲) به صورت ‘abcde’ خواهد بود براي الحاق رشته ها از تابع concat استفاده ميشود:
(اسامي رشته ها)concat
دستورات زير را در نظر بگيريد:

S۱:=’pascal’;
S۲:=’is a ;
S۳:=’language’;
S۴:=concat(s۱,s۲,s۳);

با اجراي اين دستور s۳ به انتهاي s۲ متصل ميشود و رشته نتيجه به انتهاي s۱ متصل ميگردد و در نتيجه رشته s۴ عبارت است از’pascal is a language’: . اگر طول رشته حاصل بيش از ۲۵۵ باشد بقيه كاراكترها حذف ميشوند.
جستجوي رشته اي در رشته ديگر:
براي اين كار از تابع pos استفاده ميشود كاربرذ اين تابع به صورت زير است:

Pos(s۱,s۲)

S۱ رشته اي است كه بايد در s۲ وجود داشته باشد محل اولين وقوع آن برگردانده ميشود و گر نه مقدار صفر برگردانده ميشود دستورات زير را در نظر بگيريد:

S۱:=’learning’
S۲:=’I am learning pascal’;
S۳:=’english’
X:=pos(s۱,s۲)
y:=pos(s۳,s۲)

چون رشته s۱ در s۲ وجود دارد دستور pos اول مقدار ۶ را در x قرار ميدهد و معنايش اين است كه رشته ‘learning’ در محل ۶ رشته s۲ وجود ندارد مقدار صفر در y قرار ميگيرد.
محاسبه طول رشته :
براي محاسبه طول رشته از تابع length به صورت زير استفاده ميشود:
(رشته)length
دستورات زير را در نظر بگيريد:

S۱:=’xymn’
X:=length(s۱)

چون طول رشته s۱ برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زيررشته:
زير رشته اي را ميتوان از رشته اي حذف كرد و يا زيررشته اي را ميتوان در رشته اي درج كرد براي حذف زير رشته از زيربرنامه ها به صورت زير به كار ميروند:

Delete(source,index,size)
Insert(pattern,destination,index)

در زيربرنامه delete زيررشته اي به طول size با شروع از محل index از رشته source حذف ميشود و در زيربرنامه insert زيررشته pattern با شروع از محل index در رشته destination درج ميشوددستورات زير را در نظر بگيريد:

S۱:=pas***cal
Delete(s۱,۴,۳)
S۲:=’paal’;
S۳:=’sc’;
Insert(s۳,s۲,);

دستور delete باعث ميشود تا با شروع از محل ۴ رشته s۱ حذف شده و رشته s۱ به pascalتبديل شود دستور insert موجب ميشود تا رشته s۳ در s۲ درج شود و در نتيجه رشته s۲ به ‘pascal’ تبديل شود.
مثال : برنامه اي بنويسيد كه يك اسم را از ورودي دريافت و آنرا بر عكس چاپ كند

Readln(name);
For i:=length(name) downto ۱ do
Write (name[i])

مثال : برنامه اي بنويسيد كه كه يك نام را از ورودي دريافت و به ما بگويد كه آيا اين نام با حرف a شروع ميشود يا خير؟

Readln(name);
If name[۱]=’a’ then
Writeln(’ok’)
Else
Writeln(’not ok’);

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

Readln(name);
For i:=۱ to length(name) do
If I mod ۲ = ۰ then
Writeln(name[i]);

روش ديگر:”

For i:=۱ to int(length(name)/۲) do
Writeln(name[i*۲]);

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

var
N:string;
Begin
Readln(n);
For i:=۱ to int(length(n)/۲) do
Begin
If n[i] <> n[length(n)-i+۱] then
K:=۰;
End;
If k=۱ then
Writeln (’ok’)
Else
Writeln(’no’);
End.

مثال : برنامه اي بنويسيد كه تعداد حروف a موجود در يك رشته ورودي را بشمارد.

Var st:string;
Begin
Readln(st);
C:=۰;
For i:=۱ to length(st) do
If st[i]=’a’ then ?if st[i] in [’a',’A'] then
C:=c+۱;
Writeln(c)

مثال : برنامه اي بنويسيد كه تعداد اسامي alireza موجود در رشته را بشمارد.

Begin
Readln(st);
C:=۰;
While pos(’alireza’,st) <> ۰ do
Begin
C:=c+۱;
J:=pos(’alireza’,st);
Delete(st,pos(’ali’,st),۳);
End;
Write ( c );
End.

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

Readln(st,st۱);
J:=pos(’=',st);
Writeln(copy ((st,۱ j) , st۱, copy (st,j+۱,۱۰۰));

تكليف : برنامه اي بنويسيد كه با دريافت سه حرف و قرار دادن آنها در يك آرايه سه تايي كليه تركيبات ممكن را كه سه حرف تركيباتشان به هم نخورد چاپ كند.
W a x
A x w
W a x
مثال : برنامه اي بنويسيد كه يك رشته را از ورودي دريافت و كليه كلمات موجود در آن را بشمارد.

Readln(st);
S:=۰;
St:=st+’ ‘
While pos(’ ‘,st) <> ۰ do
Begin
S;=s+۱;
Delete(st,۱,pos(’ ‘,st));
While st[۱]=’ ‘do
Delet (st,۱,۱);
End;
End.

تكليف : برنامه اي بنويسيد كه ۱۰۰ رسته را از ورودي دريافت و در يك آرايه به طول ۱۰۰ از نوع string بريزيد و به سؤالات زير جواب دهد.
۱- تعداد كل كلمات
۱- تعداد كل حروف
۲- تعداد حروف صدا دار

ذخيره اطلاعات :
Log file : فايلي است كه تمام تغييرات مربوط به يك محيط را ثبت ميكند
فايلها :
۱- متني text
۲- ركوردي typed
۳-بدون نوع
۴-untyped

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

Text : نام فايل

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

; (’نام خارجي ,’نام فايل ) assign

مثال :

Assign(f,’c:\a۱.dat.ddd’);

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

;( نام فايل)reset

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

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

تا close انجام نشود data ذخيره نميشود .
نكته بسيار مهم : در هر يك از مسائلي كه در مورد فايلها مطرح ميشود مي بايستي به نحوي از يكي از تكنيكهاي نگهداري اطلاعات در حافظه اصلي استفاده نمود اين تكنيكها ممكن است استفاده از متغيرها و آرايه ها و ماتريسها و ودرختهاو…استفاده نمود ولي تنها با دو عمل خواندن و نوشتن به روي فايل كار انجام ميشود
Update : ميخوانيم ولي دوباره ميريزيم سر جاش
Append : بهش يك چيزي اضافه ميكنيم
نكته : عمل rewrite باعث ميگردد چنانچه فايل وجود نداشته باشد ايجاد و چنانچه وجود دارد اطلاعاتش به طور كامل پاك شود.
مثال : برنامه اي بنويسيد كه۱۰۰ اسم را از ورودي دريافت و آنها را در يك فايل به نام a۱.dat))بنويسد.

Var
F:text;a:string;
Begin
Assign(f,’a۱.dat’);
Rewrite(f);
For i:=۱ to ۱۰۰ do
Readln(a);
Writeln(f,a);
End;
Close(f);
End.

مثال : برنامه اي بنويسيد كه فايل a۱.dat را خوانده و به ما بگويد چند بار اسم ali تكرار شده است؟

Var
A:text;
B:string;
Begin
Assign(a,’a۱.dat’);
Reset(a);
Sum:=۰;
For i:=۱ to ۰۰ do
Begin
Readln(a,b);
If b=’ali’ then
Sum:=sum+۱;
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:=۱;
A:=۱;
Z:=۱;
Reset(f);
While not eof (f) do
Begin
Readln(f,name);
If name=’ali’ then
A:=a+۱;
If name =’hassan’ then
H:=h+۱;
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+۱;
End;
Close(f);
Writeln(’sum of z is :’z);
End.

تكليف : برنامه اي بنويسيد كه تعدادي نام را از ورودي دريافت و در يك فايل بريزد سپس فايل تشكيل شده را باز كرده و از روي اين فايل دو فايل ديگر تشكيل دهيد كه در يكي از آنها اسامي كه بين a تا z قرار گرفته اند ريخته و در فايل دوم كليه اسامي كه از v تا z هستند را بريزد.

Program test;
Var
Name : string;
F,f۱,f۲:text;
Begin
Assign(f,’a.dat’);
Rewrite(f);
Writeln(’enter a name ‘);
Readln(name);
While length(name)>۰ do
Begin
Writeln(f,name);
Writeln(’enter a name’);
Readln(name);
End;
Close(f);
Reset(f);
Assign(f۱,’a۱.dat’);
Assign(f۲,’a۲.dat’);
Rewrite(f۱);
Rewrite(f۲);
While not eof (f) do
begin
Readln(f,name);
Case name[۱] of
‘a’..’u':writeln(f۱,name);
‘v’..’z':writeln(f۲,name);
end;
end;
close(f۲);
close(f۱);
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 دو فايل مرتب شده را با يكديگر تركيب و يك فايل مرتب شده به دست آوريم.

آموزش پاسکال ، آرایه ها و رشته ها

مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و طبق جدول زير نسبت به مقدار آن واكنش نشان دهد۳ ۲ ۱ a
B+…+۳+۲+۱ ۱..b b..۱ واكنش

Begin
Writeln (’ enter a,b :’);
Readln(a,b);
Case a of
۱:begin
for i:=۱ to b do
write(i);
end;
۲:begin
or I;=b downto ۱ do
write(i);
end;
۳:begin
sum:=۰;
for i:=۱ to b do
sum:=sum+I;
write(sum);
end;
end.

آرايه ها :
آرايه ها به عناصري اتلاق ميشود كه با يك نام تعدادي محل از حافظه را كنترل كند براي تشخيص محلها از انديس استفاده ميشود
انواع آرايه ها :
۱- آرايه هاي يك بعدي
۲- عناصر دو بعدي
۳- آرايه هاي سه بعدي

تعريف آرايه ها :
var
نوع of ]انديس پايان..انديس شروع: array [ نام آرايه
نوع متغير آرايه : متغير آرايه
خواندن آرايه :
مثال : برنامه اي بنويسيد كه نمرات ۱۰۰ دانش آموز را از ورودي دريافت و در يك آرايه بريزد.

Var
A:array[۱..۱۰۰] of real;
Begin
For i:=۱ to ۱۰۰ do
Readln(a[i]);

مثال : برنامه اي بنويسيد كه نمرات ۱۰۰ دانش آموز را از ورودي دريافت و ۵۰ تاي اول را چاپ كند سپس تعداد نمرات ۲۰ را مشخص كند.

Var
A:array[۱..۱۰۰] of real;
Begin
For I;=۱ to ۱۰۰ do
Writeln(’enter no(’,I,’)');
Readln(a[i]);
For i:=۱ to ۵۰ do
Writeln(a[i]);
S:=۰;
For i:=۱ to ۱۰۰ do
If i:=۱ to ۱۰۰ do
If a[i]=۲۰ then
S:=s+۱;
Writeln(s);
End.

پيدا كردن max,min
عنصر اول =min
حلقه براي گردش در آرايه
Min < عنصر فعلي if
عنصر فعلي min :=
Write(min);
مثال : برنامه اي بنويسيد كه با دريافت نمرات ۱۰۰ دانش آموز بالاترين و پايين ترين نمره را در بين اين ۱۰۰ نفر پيدا كند.

Var
A:array[۱..۱۰۰] of real;
I:integer;
Begin
For i:=۱ to ۱۰۰ do
Readln(a[i]);
Min:=a[۱];
Max:=a[۱];
For i:=۲ to ۱۰۰ do
Begin
If a[۱]< min then
Min:=a[i];
If a[i]>max then
Max := a[i];
End;
Writeln(’max is :’,max,’min is :’,min);
End.

مثال : برنامه اي بنويسيد كه با دريافت ۱۰۰ اسم به ما بگويد تعداد تكرار اسم ali چند بار است وآيا اسم hassan بيشتر ذكر شده يا اسم reza ؟

Var
A:array [۱..۱۰۰] of string;
Begin
For i:=۱ to ۱۰۰ do
Readln(a[i]);
Ali:=۰;
Reza:=۰;
Hassan:=۰;
For i:=۱ to ۱۰۰ do
Begin
If a[i]=’ali’ then
Ali:=ali+۱;
If a[i]=’reza’ then
Reza:=reza+۱;
If a[i]=’hassan’ then
Hassan:=hassan+۱;
Endd
Writeln(ali is :’,ali);
If reza>hassan then
Writeln(’reza’)
Else
Writeln(’hassan’);
End.

مثال : برنامه اي بنويسيد كه با دريافت نام و نمره ۱۰۰ دانش آموز تنبل ترين فرد كلاس را مشخص كند.

Var
Name:array[۱..۱۰۰] of string;
No:array[۱..۱۰۰] of real;
Begin
For i:=۱ to ۱۰۰ do
Begin
Readln(name[i]);
Readln(no[i]);
End;
Min:=no[۱];
Namemin:=name[۱];
For i:=۲ to ۱۰۰ do begin
If no[i]
Begin
Min:=no[i];
Namemin:=name[i];
Writeln(namemin);
End.

آرايه هاي دو بعدي:
وقتي از آرايه دوبعدي استفاده ميكنيم بايد از دو حقه for استفاده كنيم.
مثال : برنامه اي بنويسيد كه نمرات ۴ كلاس كه هر يك ۲۰ دانش آموز دارد را از ورودي دريافت وتنبل ترين فرد را در اين ۴ كلاس مشخص كند.

Var
A:array[۱..۲۰,۱..۴] of real;
Begin
For i:=۱ to ۴ do
Begin
For j:=۱ to ۲۰ do
Readln(a[j,i]);
End;
Min:=a[۱,۱];
For i:=۱ to ۴ do
For j:=۱ to ۲۰ do
If a[j,i]< min then
Min:=a[j,i];
Writeln(min);
End.

مثال : در يك آرايه ۱۰۰*۲۰دوهزار كاراكتر نگهداري ميشود برنامه اي بنويسيد كه تعداد تكرار حرف A را با a مقايسه كند و همچنين به ما بگويد آيا كاراكتر z در اين ماتريس وجود دارد ؟

Var
A:array[۱..۲۰,۱..۱۰۰] of character;
Bool:Boolean;
B,b۱:integer;
Begin
For i:=۱ to ۱۰۰ do
For j:=۱ to ۲۰ do
If a[I,j]=’A’ then
B:=b+۱;
If a[I,j]=’a’ then
B۱:=b۱+۱;
If a[I,j]=’z’ then
Bool:=true;
End;
If b>b۱ then writeln(’A>a’);
If b
If b=b۱ then writeln(’A=a’);
If true then writeln(”’z”exist’);
End.

تكليف : ميخواهيم نام و نمره تعدادي دانش آموز يك كلاس را از ورودي دريافت كنيم و مشخص كنيم كه تنبل ترين و زرنگ ترين فرد كلاس كيست.چند نفر نمره زير ۱۰ گرفتند؟نام كساني كه نمره آنها در بازه ۱۷ تا ۱۵ مي باشد ب همراه نمره آنها چاپ شود آخرين نفر نامش end است حداكثر تعداد دانش آموزان ۱۰۰ نفر است.

Vara:array [۱..۱۰۰] of string ;
b:array[۱..۱۰۰] of real;
begin
i:=۱;
read(a[i]);
while a[i]<>‘end’ do begin
readln(b[i]);
i:=i+۱;
readln(a[i]);
end;
j:=i-۱;
min:=a[۱];
max:=a[۱];
for i:= ۲ to j do
begin
if b[i] >max then
begin
max:=b[i];
name:a[i];
end;
end
writeln(name);
count:=۰;
for i:=۱ to j do
if b[i]<=10 then
count:=count+۱;
writeln(count);
for i:=۱ to j do
if (b[i]<17) and (b[i]>۱۵) then
write(b[i],a[i]);
end.

تكليف : برنامه اي بنويسيد كه حاصل اين عبارت را حساب كند.
i/i!=۱/۱!+۲/۲!+۳/۳!+۴/۴!+۵/۵!
N!= ۱*۲*۳*۴*…*n

Begin
Sum:=۰;
For n:=۱ to ۵ do
Begin
For m:=۱ to n do
F:=f*m;
Sum:=sum+n/f;
End;
Writeln(sum);
End.

تكليف : برنامه اي بنويسيد كه نمرات ۸۰ دانش آموز را كه در چهار كلاس دسته بنده شده اند را از ورودي دريافت كند سپس به سوالات زير جواب دهد.
۱- معدل هر يك از كلاسها
۲- نمره تنبل ترين و زرنگترين شخص در هر كلاس به طور جداگانه

Var
A:array [۱..۴,۱..۲۰] of real;
Begin
For i:=۱ to ۴ do
For j:=۱ to ۲۰ do
Begin
Writeln(’please enter nomreh’);
Readln(a[I,j]);
End;
For i:=۱ to ۴ do
Begin
Sum:=۰ ;
For j:=۱ to ۲۰ do
Begin
Sum:=a[I,j]+sum;
End;
Writeln(sum/۲۰,’average of this class’);
End;
For i:=۱ to ۴ do
Begin
Max :=a[۱,۱];
Min:=a[۱,۱];
For j:=۲ to ۲۰ do
Begin
If a[I,j]>max then
Max :=a[I,j];
End;
Writeln(I,min,max);
End;
End.

- String :
String آرايه اي از كاراكترهاست .اغلب لازم است كاراكترهايي در رشته موجود درج شوندو يا كاراكترهايي به جاي بخشي از رشته نوشته شوند , زيررشته اي در رشته جستجو گردد و يا دو رشته با هم الحاق شوند.
رشته تهي : طول رشته ثابت نيست و با داداه هايي كه در آن ذخيره شده است مشخص مي گردد.كاراكترهايي كه در رشته قرار مي گيرد از حداكثر طولي كه براي آن تعيين ميشود بيشتر نخواهد بود. اگر name رشته كاراكتري باشد دستور زير name را به رشته تهي تبديل ميكند:

Name:=”;

تبديل رشته به اعداد :
در پاسكال زير برنامه هايي وجود دارند كه به آساني ميتوانند رشته ها را پردازش كنند. زيربرنامه val رشته عددي را گرفته به مقدار عددي تبديل ميكند.
رشته عددي رشته اي است كه حاوي كاراترهاي ‘۰′ تا ‘۹′ و نقطه مميز باشد مثل ‘۱۲.۵′ و’۱۳.۵′ زيربرنامه val به صورت زير به كار ميرود.

Val (st,number,error)

St رشته اي است كه بايد به عدد تبديل شود و number متغيري است كه رشته تبديل شده به عدد در آن قرار ميگيرد. چنانچه در رشته st كاراكتر نا معتبري (كاراكترهاي غير از( ‘۰′ تا ‘۹′ و’.’ ) , محل وجود آن كاراكتر در پارامتر error قرار ميگيرد. اگر error برابر با صفر باشد معنايش اينست كه كاراكتر نا معتبري وجود ندارد. اگر number از نوع صحيح باشد st به مقدار صحيح و اگر number از نوع اعشاري باشد st به مقدار اعشاري تبديل ميشود .
مثال زير را در نظر بگيريد:

Var st :string;
Num,e:integer;
St:=’۳۵۲′;
Val (st,num,e);

مقدار ۳۵۲ در متغير num ومقدار صفر در متغير e قرار ميگيرد اكنون دستورات زير را در نظر بگيريد :

St:=’۳۵#’۲;
Val (st,num,e);

با اجراي دستور val به دليل وجود كاراكتر’ # ‘ كه كاراكتر نامعتبري در اعداد است عدد ۲ در متغير e قرار ميگيرد و معنايش اينست كه كاراكتر شماره ۲ ( شماره گذاري از صفر شروع ميشود) نامعتبر است و عمل تبديل صورت نميگيرد و مقدار num تعريف نشده است.
تبديل عدد به رشته :
براي تبديل مقدار عددي به رشته عددي از زيربرنامهstr استفادهميشود و به صورت زير به كار ميرود:

Str (number : format,numstring)

با اين دستور مقداري كه در number قرار دارد به رشته اي به طول format تبديل ميشود و در رشته numstring قرار ميگيرد . دستورات زير را در نظر بگيريد:

Var x:integer;
St:string;
X=۳۵۲;
Str(x:۵,st);

با اجراي اين دستور مقدار ۳۵۲ به رشته ‘۳۵۲′ تبديل شده در st قرار ميگيرد

آموزش پاسکال . شرط ها و حلقه ها

مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و چنانچه عدد اول در بازه ۰ تا ۵ بود توان دوم عدد دوم را چاپ كند چنانچه ۶۸ بود حاصلضرب دو عدد را چاپ كند و در غير اينصورت مقادير مجاز را چاپ كند.

BEGIN
WRITELN(’ENTER TWO NUMBER’);
READLN(A,B);
CASE A OF
۰..۵ :WRITELN(B*B);
۶۸:WRITELN(A*B)
ELSE
WRITELN(’ENTER ۰..۵ OR ۶۸′);
END;
END.

- معادل برنامه بالا با دستور If :

Begin
Writeln(’enter ۲ number’);
Readln(a,b);
If (a>=۰)and(a<=5) then
Writeln(b*b)
Else
If a=۶۸ then
Writeln(a*b)
Else
Writeln('enter ۰..۵ or۶۸');
End.

تكليف : روشي براي تلفظ اعداد پيدا كنيد.

حلقه تكرار :
۱- تعداد معين
۲- تعداد معين
Do مقدار نهايي to { مقدار شروع=: متغير for
downto
begin
___
___
___
end;
توجه مهم : در برخي از حلقه ها دستورات داخل حلقه به متغير حلقه مرتبط مي باشند و در برخي موارد هيچگونه ارتباطي وجود ندارد.
حلقه for براي تعداد تكرار معين به كار ميرود
Downto : در مواردي به كار ميرود كه مقدار اوليه از مقدار نهايي بيشتر باشد

مثال : برنامه اي بنويسيد كه توان دوم اعداد ۱۰۰ تا ۲۰۰ را چاپ كند.

Begin
For i:=۱۰۰ to ۲۰۰ do
Begin
Writeln(i*i);
End;
End.

نكته : اجازه نداريد مقدار متغير حلقه را در داخل بدنه عوض كنيد .
مثال : برنامه اي بنويسيد كه حاصلجمع اعداد ۱۰۰..۱ را چاپ كند.

Begin
Sum:=۰;
For i:=۱ to ۱۰ do
Begin
Sum:=sum+i
End;
Write(sum);
End.

مثال : برنامه اي بنويسيد كه حاصلجمع مضارب ۵ بين ۰ تا ۱۰۰را به دست آورد.

Begin
Sum:=۰;
For I:=۱ to ۲۰ do
Begin
Sum:=sum+i*۵;
End;
Writeln(sum);
End.

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

Begin
Writeln(’enter a,b’);
Readln(a,b);
For I:= a to b do
Writeln(i);
End.

مثال : برنامه اي بنويسيد كه با يك حلقه for اعداد بين۱۰۰..۱ و۷۳۸..۳۵۳و ۹۵۰..۹۴۰ را چاپ كند

Begin
For i:=۱ to ۹۵۰ do
Begin
If ( i>=۱) and (i<=100) then
Writeln(i);
If (i>۳۵۳) and (i<=738) then
Writeln(i);
If (i>=۹۴۰) and (i<=950) then
Writeln(i);
End;
End.

معادل برنامه بالا با استفاده از دستور case :

Begin
For i:=۱ to ۹۵۰ do
Case I of
۱..۱۰۰,۳۵۳..۷۳۸,۹۴۰..۹۵۰: writeln(i);
end;
end.

باقيمانده  mod
مثال :
X mod y
مثال : برنامه اي بنويسيد كه مضارب ۷ بين ۱ تا ۱۰۰ را چاپ كند

Begin
For i:= ۱ to ۱۰۰ do
Begin
If I mod ۷ = ۰ then
Writeln(i);
End;
End.

مثال : برنامه اي بنويسيد كه تعداد مضارب ۵و۷ را در بازه ۲۳۱~۸۴۶ چاپ كند.

Begin
K:=۰;
C:=۰;
For i:=۸۴۶ downto ۲۳۱ do
Begin
If I mod ۵ = ۰ then
C:=c+۱;
If I mod ۷ = ۰ then
K:=k+۱;
End;
Writeln(’۵=’,c,’۷=’,k);
End;
End.

مثال : برنامه اي بنويسيد كه حقوق پايه وتعداد فرزندان ۱۰۰ كارگر را از ورودي دريافت و مبلغ حقوق آنها را بر اساس فرمول زير حساب كند۰
۱۰۰۰*تعداد فرزند + حقوق پايه = حقوق كل

Begin
For i:=۱ to ۱۰۰ do
Begin
Writeln(’enter salary and number of children’);
readln(salary,num);
kol := salary + num * ۱۰۰۰;
writeln(kol);
end;
end.

مثال : برنامه اي بنويسيد كه ۱۰۰ عدد را از ورودي دريافت و ميانگين و حاصلجمع آنها را به ما بدهد.

Begin
Sum:=۰;
For i:= ۱ to ۱۰۰ do
Begin
Writeln(’enter num’);
Readln(num);
Sum:=sum+num;
End;
Ave:=ave/۱۰۰;
Writeln(sum,ave);
End.

تعداد تكرار نامعين :
Do شرط while
begin
___
___
___
end;
مثال : برنامه اي بنويسيد كه اعداد ۱۰۰..۱ را چاپ كند

Begin
I:=۱;
While i<=100 do
Begin
Write(i);
I:=i+۱;
End;

مثال : برنامه اي بنويسيد كه تعدادي اسم را از ورودي دريافت و به ما بگويد چند بار اسم ali تكرار شده است(آخرين اسم end است).

Var
S:integer;
St:string;
Begin
Read(st);
While st<> ‘end’ do
Begin
If st=’ali’ then
S:=s+۱;
Read(st);
End;write(s);
End.

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

Begin
Readln(num);
T:=۱;
While num<>۰ do
Begin
Sum:=sum+num;
Readln(num);
T:=t+۱;
End;
Writeln(’s=’,s,’average’,s/t);
End;

تكليف : براي دانش آموزان يك كلاس برنامه اي بنويسيد كه نام آنها به همراه تعداد نمرات و سپس نمرات آنها را به فرم زير از ورودي دريافت كند.تعداد دانش آموزان كلاس نامعين است ولي آخرين نفر نامش end است .برنامه ميبايستي پس از دريافت هر يك از اطلاعات پيامي به شكل زير چاپ كند.

Average: Sum: Ali Name:
۳
۱۸
۲۰
۱۳.۵

program test;
var
name:string[۱۰];
ave,sum,nomreh:real;
num,i:integer;
begin
writeln(’enter name ‘ );
readln(name);
while name <> ‘end’ do
begin
writeln(’enter num:’);
readln(num);
for i:=۱ to num do
begin
writeln(’enter nomreh: ‘);
readln(nomreh);
sum:=sum+nomreh;
end;
ave:=sum/num;
writeln(’name:’,name,’sum:’,sum,’ave:’,ave);
writeln(’enter name ‘);
readln(name);
end;
end.

تكليف : ميخواهيم براي برنامه هاي خود يك منو تهيه كنيم اين منو شامل موارد زير است
۱) load
۲) save
۳) edit
۴) exit
please select a number :

program test;
var
num:integer;
begin
writeln(’ ۱) load’);
writeln(’ ۲) save’);
writeln(’ ۳) edit’);
writeln(’ ۴) exit’);
writeln(please select a number : ‘);
readln(num);
while num<>۴ do
begin
case num of
۱:writeln(’loading’);
۲:writeln(’saving’);
۳:writeln(’editing’);
end;
end;
end.

آموزش پاسکال . قسمت اول

زبان پاسكال يكي از زبانهاي برنامه سازي است كه ويژگيهاي آموزشي آن بسيار بالاست يعني زبان خوبي براي آموزش برنامه نويسي منظم و دقيق است.قابليت خوانايي و درك برنامه هاي اين زبان بالاست وميتوان برنامه هايي نوشت كه احتمال خطاهاي آنها بسيار اندك باشد علتش اين است كه يك زبان ساختار يافته (structed) است .

ساختار كلي برنامه چيست؟
۱-تعريف
۲-به وسيله procedure و functionقسمتهاي تكراري را از بين ببريم
۳-بدنه
فرم كلي پاسكال:

اسم Program
;
تعريف ثابت const
;
تعريف نوع type
;
تعريف متغيرها var
)
پارامترها ) نام procedure

begin
____
____
____
end ;

; ( پارامترها ) نام  نوع تابع  function
begin
____
____
____
end ;
begin
____
____
____
end .

متغير : محلي است كه داراي يك اسم مي باشد و مي توان مقداري را در آن ذخيره كرد

انواع متغيرها در پاسكال:
Integer :انواع عددي صحيح شامل اعداد بدون نقطه مميز است
نوع مقاديري كه مي پذيرند طول(بايت)
byte ۰ تا ۲۵۵ ۱
Shortint ۱۲۸- تا ۱۲۷ ۱
integer ۳۲۷۶۸- تا ۳۲۷۶۷ ۲
Word ۰ تا ۶۵۵۳۵ ۲
Longint ۲۱۴۷۴۸۳۶۴۸- تا ۲۱۴۷۴۸۳۶۴۷ ۴

اعداد اعشاري:
انواع عددي اعشاري شامل اعدادي با نقطه مميز است

نوع مقاديري كه ميپذيرند ارقام با معني طول(بايت)

single ۱.۵e-۴۵ تا۳.۴e۳۸ ۷ تا ۸ ۴
real ۲.۹e-۳۹ تا ۱.۷e۳۸ ۱۱ تا ۱۲ ۶
Double ۵.۰e-۳۲۴تا ۱.۷e۳۰۸ ۱۵ تا ۱۶ ۸
extended ۱.۹e-۴۹۵۱تا ۱.۱e۴۹۳ ۱۹ تا ۲۰ ۱۰

انواع داده هاي اعشاري

-Char :
نوع داده كاراكتري كه با كلمه char مشخص مي شود ميتواند يك كاراكتر را در خود نگهداري كند بنابراين كاراكترها در يك بايت از حافظه كامپيوتر ذخيره مي شوند

String - :
اين نوع داده ها براي ذخيره رشته ها مثل اسامي افراد به كار مي رود و با كلمه كليدي string مشخص ي گردد
براي هر رشته بايد طول معلوم كنيم اگر طولي تعريف نشود به طور پيش فرض ۸۰ در نظر گرفته ميشود(مقدار طول حداكثر ۲۵۵ است)
- Boolean :
نوع ديگري از داده ها در پاسكال وجود دارند كه داده هاي بولي خوانده مي شوند مقادير بولي داراي دو ارزش درستي يا نادرستي اند كه در پاسكال با صفر و يك نمايش داده مي شوند صفر به معني نادرستي و يك به معني درستي به كار ميرود اين نوع داده ها با كلمه Boolean تعريف ميشوند.
دستورات ورودي در پاسكال:
دستور Readlnبراي خواندن اطلاعات از ورودي به كار ميرود.
فرمت آن به صورت مقابل است:
(اسامي متغيرها)read/ln
اسامي متغيرها بايد با كاما از يكديگر جدا شوند..
براي چاپ اطلاعات در خروجي از دستور write/ln استفاده ميكنيم.
فرمت آن به صورت مقابل است:
‘ يك پيام ‘
( متغير ) write/ln
عبارت محاسباتي
انتساب متغيرها:
مقدار ثابت
( متغير )=: متغير
عبارت محاسباتي

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

Program add;
Var
a,b:integer;
begin
writeln(’enter ۲ num’);
readln(a,b);
c:=a+b;
writeln(’result is =’,c);
end.

تكليف : چرا برنامه بايد ادب داشته باشد ؟
مثال : برنامه اي بنويسيد كه حقوق پايه وتعداد فرزندان يك كارگر را از ورودي دريافت و مبلغ حقوق وي را بر اساس فرمول زير حساب كنيد.
۱۰*تعداد فرزندان + حقوق پايه =حقوق كل

Program test;
Var
Salary:longint;
Child:byte;
kole:integer
Begin
Writeln(’enter salary and number of child);
Readln(salary,child);
Kole := salary + child *۱۰
Writeln(’kole is ‘,kole);
END.

اولويت عملگرها:

/ *
- +
شرط:
then شرط if
Begin
____
____
____
end
else
begin
____
____
____
end;

نكته : دستورالعمل قبل از IF سمي كالن نمي گيرد
عناصر شرط:
< > <= >= = <>
اپراتورها :

AND OR NOT XOR
NOT A
۱ ۰
۰ ۱

XOR OR AND B A
۰ ۱ ۱ ۱ ۱
۱ ۱ ۰ ۰ ۱
۱ ۱ ۰ ۱ ۰
۰ ۰ ۰ ۰ ۰

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

Program test;
Var
a,b:integer;
if a>b then
begin
writeln(a);
end
else
writeln(b);
end.

مثال : برنامه اي بنويسيد كه با دريافت سه عدد به عنوان ضرايب y=ax۲+bx+c معادله درجه دو را حل كند(اين برنامه را با يك If بنويسيد).

Var
A,b,c:integer;
D,x۱,x۲:real;
Begin
Writeln(’enter a,b,c’);
Readln(a,b,c);
D:=b*b-۴*a*c;
If (d >=۰ ) then
Begin
X۱:=(-b+sqrt(d))/۲*a);
X۱:=(-b-sqrt(d))/۲*a);

مثال : برنامه اي بنويسيد كه تعداد فرزندان وحقوق پايه و رتبه يك كارگر را از ورودي دريافت و حقوق كل وي را بر اساس فرمول زير حساب كند.
كسريها - مزايا +بيمه = حقوق كل
۵*رتبه +۱۰۰۰* تعداد فرزند = مزايا
ماليات + بيمه = كسريها

بيشتر كمتر يا مساوي ۲ تعداد فرزند
تعداد فرزندان ۱۰۰۰ بيمه
هر چيزي ديگر ۲۰ تا ۰ رتبه
حقوق پايه حقوق پايه*۱۰۰/۱۰ ماليات

begin
writeln(’enter salary and grade and number of child’);
readln(salary ,num,grade);
if num<=2 then
bimeh:=۱۰۰
else
bimeh :=num*۵۰۰;
if (grade>=۰) and (grade<=20)then
net := ۱۰/۱۰۰*salary
else
if grade >۲۰ then
begin
net:=۲۰/۱۰۰*salary;
mazaya:=num*۱۰۰۰+grade*۵۰;
kasry:=bimeh+net;
kol :=salary + mazaya-kasry;
end;
writeln(kol);
end.

تكليف : در يك تركيب شيميايي ۴ عنصر شركت دارند مقدار مجاز براي تهيه ماده اي به نام asxd به اين صورت است.
A ۰ ~ ۵۰
S ۰.۵ ~ ۰.۸۳
X ۸۱ ~ ۹۲ or ۸۲۴ ~ ۹۰۱
D -۱۰۰ ~ ۱۰۰
با دريافت مقادير a,s,x,d از ورودي به ما بگويد كه آيا مي توان اين ماده را توليد كرد يا نه ؟

Begin
Num:=۰;
Writeln(’please enter a s x d’);
Readln(a,s,x,d);
If (a>۰) and(a<50) then
Num:=num+۱;
If (s>۰.۵)and (s<0.83) then
Num:=num+۱;
If ((x>۸۱)and(x<92))or ((x>۸۲۴)and(x<901))then
Num:=num+۱;
If (d>-۱۰۰) and (d<100) then
Num:=num+۱;
If num=۴ then
Writeln('yes can')
Else
Writeln('you can not');
End.

تكليف : برنامه اي بنويسيد كه با دريافت سه عدد و با فرض اينكه عدد دوم وتر ميباشد به ما بگوييد كه آيا اين سه عدد تشكيل يك مثلث قايم الزاويه مي دهد يا خير؟

CASE:
CASE ميتواند تعداداي شرط را بگيرد و انتخاب كند.
مقاديري كه دستور CASE ميپذيرد ORDINAL است مقاديري كهORDINAL هستند داراي تركيب نيستند و همچنين قابل شمارش هم هستند مثل INTEGER,CHARACTER,BYTE,BOOLEAN,LONGINT,…
پسREAL,STRING ORDINAL<---- نيستند
CASE تنها دستوري است كه BEGIN ندارد ولي END دارد
مقدارها ميتوانند شامل يك مقدار يا چند مقدار كه از يكديگر با كاما جدا شده اند باشند و يا يگ سري شمارشي باشند مثل:

۱:——
۱,۱۰,۲۸:——
۱..۱۰۰,۱۵۰..۲۴۳:———
‘A’..’Z':———

Of متغير Case
Begin : مقدار۱
——-
——-
End;
Begin : مقدار۲
——-
——-
End;
Begin :Else
——-
——-
End;
End.

مثال : برنامه اي بنويسيد كه يك عدد را از ورودي دريافت ( (۰<=x<3وتلفظ آنها را چاپ كند.

BEGIN
READLN(X);
CASE X OF
۰:WRITELN(’ZERO’);
۱:WRITELN(’ONE’);
۲:WRITELN(’TWO’)
ELSE
WRITELN(’ERROR’);
END;
END.


 

نوشته شده توسط در پنجشنبه دوازدهم مهر 1386 ساعت 12:3 موضوع | لینک ثابت



 

نوشته شده توسط در شنبه سی و یکم شهریور 1386 ساعت 10:54 موضوع | لینک ثابت



 

نوشته شده توسط در شنبه سی و یکم شهریور 1386 ساعت 10:53 موضوع | لینک ثابت



 

نوشته شده توسط در شنبه سی و یکم شهریور 1386 ساعت 10:52 موضوع | لینک ثابت



 

نوشته شده توسط در شنبه سی و یکم شهریور 1386 ساعت 10:51 موضوع | لینک ثابت


اگه دستم به جدايي برسه

اونو از خاطره ها خط مي زنم

از دل تنگ تموم آدما

از شب و روز خدا خط مي زنم

اگه دستم برسه به آسمون

با ستاره ها قيامت مي كنم

نمي ذارم كسي عاشق نباشه

ماه رو بين همه قسمت مي كنم

 

وقتي گاهي من و دل تنها مي شيم

حرفهاي نا گفته رو مي شه ديد

مي شه تو سكوت بين ما دوتا

خيلي از نديدنيها رو شنيد

 

قصه ي جدايي ما آدما

قصه ي دوري ماست از خودمون

دوري من و تو از لحظه ي عشق

قصه ي سادگي گمشدمون


 

نوشته شده توسط در شنبه سی و یکم شهریور 1386 ساعت 10:51 موضوع | لینک ثابت


جای خالی

وقتی که بودی ...

  وقتی که بودی ...   افتاب تو اسمون بود

وقتی که بودی ...   دلم اروم تر از این بود

 وقتی که بودی ...   دستهام باهات بود

  وقتی که بودی ...   نگاهم برات بود

وقتی که بودی ... چشمام برات بود

وقتی که بودی ... روزام روشن بود

وقتی که بودی ...   یکی باهام بود

وقتی که بودی ...   لبخند باهام بود

 

اما... 

 وقتی نیستی ...

وقتی نیستی ...    اسمون دلم ابریه

وقتی نیستی ...   دستام به باده

وقتی نیستی ...    چشام پر اشکه

وقتی نیستی ...   نگاهم سوی بن بسته

 وقتی نیستی ...  دلم اسیر طوفانه

وقتی نیستی ...    سرم رو شونه هامه

     وقتی که نیستی....................


 

نوشته شده توسط در دوشنبه بیست و ششم شهریور 1386 ساعت 18:19 موضوع | لینک ثابت


دلم گرفته است ...

 

سجاده ام كجاست
مي خواهم از هميشه ي اين اضطراب برخيزم
اين دل گرفتگي مداوم شايد،
تأثير سايه ي من است،
كه اين سان گستاخ و سنگوار
بين خدا و دلم ايستاده ام. ۱
سجاده ام كجاست؟

-... شعر از سلمان هراتی

---- بعد از تحریر...

۱- میان عاشق و معشوق هیچ حایل نیست

تو خود حجاب خودی حافظ از میان برخیز


 

نوشته شده توسط در یکشنبه بیست و پنجم شهریور 1386 ساعت 12:36 موضوع | لینک ثابت


This page is hosted by XM.COM - Free Web Hosting