آموزش پاسکال قسمت سوم
آموزش پاسکال قسمت سوم
مثال : برنامه ای بنویسید كه دو عدد را از ورودی دریافت و طبق جدول زیر نسبت به مقدار آن واكنش نشان دهد
3 2 1 a
B+...+3+2+1 1..b b..1 واكنش
Begin
Writeln (' enter a,b :');
Readln(a,b);
Case a of
1:begin
for i:=1 to b do
write(i);
end;
2:begin
or I;=b downto 1 do
write(i);
end;
3:begin
sum:=0;
for i:=1 to b do
sum:=sum+I;
write(sum);
end;
end.
آرایه ها :
آرایه ها به عناصری اتلاق میشود كه با یك نام تعدادی محل از حافظه را كنترل كند برای تشخیص محلها از اندیس استفاده میشود
انواع آرایه ها :
1- آرایه های یك بعدی
2- عناصر دو بعدی
3- آرایه های سه بعدی
تعریف آرایه ها :
var
نوع of ]اندیس پایان..اندیس شروع: array [ نام آرایه
نوع متغیر آرایه : متغیر آرایه
خواندن آرایه :
مثال : برنامه ای بنویسید كه نمرات 100 دانش آموز را از ورودی دریافت و در یك آرایه بریزد.
Var
A:array[1..100] of real;
Begin
For i:=1 to 100 do
Readln(a[i]);
مثال : برنامه ای بنویسید كه نمرات 100 دانش آموز را از ورودی دریافت و 50 تای اول را چاپ كند سپس تعداد نمرات 20 را مشخص كند.
Var
A:array[1..100] of real;
Begin
For I;=1 to 100 do
Writeln('enter no(',I,')');
Readln(a[i]);
For i:=1 to 50 do
Writeln(a[i]);
S:=0;
For i:=1 to 100 do
If i:=1 to 100 do
If a[i]=20 then
S:=s+1;
Writeln(s);
End.
پیدا كردن max,min
عنصر اول =min
حلقه برای گردش در آرایه
Min < عنصر فعلی if
عنصر فعلی min :=
Write(min);
مثال : برنامه ای بنویسید كه با دریافت نمرات 100 دانش آموز بالاترین و پایین ترین نمره را در بین این 100 نفر پیدا كند.
Var
A:array[1..100] of real;
I:integer;
Begin
For i:=1 to 100 do
Readln(a[i]);
Min:=a[1];
Max:=a[1];
For i:=2 to 100 do
Begin
If a[1]< min then
Min:=a[i];
If a[i]>max then
Max := a[i];
End;
Writeln('max is :',max,'min is :',min);
End.
مثال : برنامه ای بنویسید كه با دریافت 100 اسم به ما بگوید تعداد تكرار اسم ali چند بار است وآیا اسم hassan بیشتر ذكر شده یا اسم reza ؟
Var
A:array [1..100] of string;
Begin
For i:=1 to 100 do
Readln(a[i]);
Ali:=0;
Reza:=0;
Hassan:=0;
For i:=1 to 100 do
Begin
If a[i]='ali' then
Ali:=ali+1;
If a[i]='reza' then
Reza:=reza+1;
If a[i]='hassan' then
Hassan:=hassan+1;
Endd
Writeln(ali is :',ali);
If reza>hassan then
Writeln('reza')
Else
Writeln('hassan');
End.
مثال : برنامه ای بنویسید كه با دریافت نام و نمره 100 دانش آموز تنبل ترین فرد كلاس را مشخص كند.
Var
Name:array[1..100] of string;
No:array[1..100] of real;
Begin
For i:=1 to 100 do
Begin
Readln(name[i]);
Readln(no[i]);
End;
Min:=no[1];
Namemin:=name[1];
For i:=2 to 100 do begin
If no[i]
Begin
Min:=no[i];
Namemin:=name[i];
Writeln(namemin);
End.
آرایه های دو بعدی:
وقتی از آرایه دوبعدی استفاده میكنیم باید از دو حقه for استفاده كنیم.
مثال : برنامه ای بنویسید كه نمرات 4 كلاس كه هر یك 20 دانش آموز دارد را از ورودی دریافت وتنبل ترین فرد را در این 4 كلاس مشخص كند.
Var
A:array[1..20,1..4] of real;
Begin
For i:=1 to 4 do
Begin
For j:=1 to 20 do
Readln(a[j,i]);
End;
Min:=a[1,1];
For i:=1 to 4 do
For j:=1 to 20 do
If a[j,i]< min then
Min:=a[j,i];
Writeln(min);
End.
مثال : در یك آرایه 100*20دوهزار كاراكتر نگهداری میشود برنامه ای بنویسید كه تعداد تكرار حرف A را با a مقایسه كند و همچنین به ما بگوید آیا كاراكتر z در این ماتریس وجود دارد ؟
Var
A:array[1..20,1..100] of character;
Bool:Boolean;
B,b1:integer;
Begin
For i:=1 to 100 do
For j:=1 to 20 do
If a[I,j]='A' then
B:=b+1;
If a[I,j]='a' then
B1:=b1+1;
If a[I,j]='z' then
Bool:=true;
End;
If b>b1 then writeln('A>a');
If bIf b=b1 then writeln('A=a');
If true then writeln('''z''exist');
End.
تكلیف : میخواهیم نام و نمره تعدادی دانش آموز یك كلاس را از ورودی دریافت كنیم و مشخص كنیم كه تنبل ترین و زرنگ ترین فرد كلاس كیست.چند نفر نمره زیر 10 گرفتند؟نام كسانی كه نمره آنها در بازه 17 تا 15 می باشد ب همراه نمره آنها چاپ شود آخرین نفر نامش end است حداكثر تعداد دانش آموزان 100 نفر است.
Var
a:array [1..100] of string ;
b:array[1..100] of real;
begin
i:=1;
read(a[i]);
while a[i]<>'end' do begin
readln(b[i]);
i:=i+1;
readln(a[i]);
end;
j:=i-1;
min:=a[1];
max:=a[1];
for i:= 2 to j do
begin
if b[i] >max then
begin
max:=b[i];
name:a[i];
end;
end
writeln(name);
count:=0;
for i:=1 to j do
if b[i]<=10 then
count:=count+1;
writeln(count);
for i:=1 to j do
if (b[i]<17) and (b[i]>15) then
write(b[i],a[i]);
end.
تكلیف : برنامه ای بنویسید كه حاصل این عبارت را حساب كند.
i/i!=1/1!+2/2!+3/3!+4/4!+5/5!
N!= 1*2*3*4*…*n
Begin
Sum:=0;
For n:=1 to 5 do
Begin
For m:=1 to n do
F:=f*m;
Sum:=sum+n/f;
End;
Writeln(sum);
End.
تكلیف : برنامه ای بنویسید كه نمرات 80 دانش آموز را كه در چهار كلاس دسته بنده شده اند را از ورودی دریافت كند سپس به سوالات زیر جواب دهد.
1- معدل هر یك از كلاسها
2- نمره تنبل ترین و زرنگترین شخص در هر كلاس به طور جداگانه
Var
A:array [1..4,1..20] of real;
Begin
For i:=1 to 4 do
For j:=1 to 20 do
Begin
Writeln('please enter nomreh');
Readln(a[I,j]);
End;
For i:=1 to 4 do
Begin
Sum:=0 ;
For j:=1 to 20 do
Begin
Sum:=a[I,j]+sum;
End;
Writeln(sum/20,'average of this class');
End;
For i:=1 to 4 do
Begin
Max :=a[1,1];
Min:=a[1,1];
For j:=2 to 20 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 رشته عددی را گرفته به مقدار عددی تبدیل میكند.
رشته عددی رشته ای است كه حاوی كاراترهای '0' تا '9' و نقطه ممیز باشد مثل '12.5' و'13.5' زیربرنامه val به صورت زیر به كار میرود.
Val (st,number,error)
St رشته ای است كه باید به عدد تبدیل شود و number متغیری است كه رشته تبدیل شده به عدد در آن قرار میگیرد. چنانچه در رشته st كاراكتر نا معتبری (كاراكترهای غیر از( '0' تا '9' و'.' ) , محل وجود آن كاراكتر در پارامتر error قرار میگیرد. اگر error برابر با صفر باشد معنایش اینست كه كاراكتر نا معتبری وجود ندارد. اگر number از نوع صحیح باشد st به مقدار صحیح و اگر number از نوع اعشاری باشد st به مقدار اعشاری تبدیل میشود .
مثال زیر را در نظر بگیرید:
Var st :string;
Num,e:integer;
St:='352';
Val (st,num,e);
مقدار 352 در متغیر num ومقدار صفر در متغیر e قرار میگیرد اكنون دستورات زیر را در نظر بگیرید :
St:='35#'2;
Val (st,num,e);
با اجرای دستور val به دلیل وجود كاراكتر' # ' كه كاراكتر نامعتبری در اعداد است عدد 2 در متغیر e قرار میگیرد و معنایش اینست كه كاراكتر شماره 2 ( شماره گذاری از صفر شروع میشود) نامعتبر است و عمل تبدیل صورت نمیگیرد و مقدار num تعریف نشده است.
تبدیل عدد به رشته :
برای تبدیل مقدار عددی به رشته عددی از زیربرنامهstr استفادهمیشود و به صورت زیر به كار میرود:
Str (number : format,numstring)
با این دستور مقداری كه در number قرار دارد به رشته ای به طول format تبدیل میشود و در رشته numstring قرار میگیرد . دستورات زیر را در نظر بگیرید:
Var x:integer;
St:string;
X=352;
Str(x:5,st);
با اجرای این دستور مقدار 352 به رشته '352' تبدیل شده در st قرار میگیرد .


