PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش پاسکال ، آرایه ها و رشته ها



TAHA
10-01-2009, 05:21 PM
مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و طبق جدول زير نسبت به مقدار آن واكنش نشان دهد۳ ۲ ۱ 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 قرار ميگيرد