آموزش پاسكال_قسمت اول
 
Software training
آموزش نرم افزار.تكنولو‍‍‍‍‍ژي هاي جديد و ...

آموزش پاسکال

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

 

ساختار كلي برنامه چيست؟
1-تعريف
2-به وسيله procedure و functionقسمتهاي تكراري را از بين ببريم
3-بدنه

 

فرم كلي پاسكال:

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


begin
____
____
____
end ;
; ( پارامترها ) نام نوع تابع function
begin
____
____
____
end ;
begin
____
____
____
end .
متغير : محلي است كه داراي يك اسم مي باشد و مي توان مقداري را در آن ذخيره كرد

 

انواع متغيرها در پاسكال:
Integer :انواع عددي صحيح شامل اعداد بدون نقطه مميز است
نوع مقاديري كه مي پذيرند طول(بايت)
byte 0 تا 255 1
Shortint 128- تا 127 1
integer 32768- تا 32767 2
Word 0 تا 65535 2
Longint 2147483648- تا 2147483647 4

 

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

نوع مقاديري كه ميپذيرند ارقام با معني طول(بايت)
single 1.5e-45 تا3.4e38 7 تا 8 4
real 2.9e-39 تا 1.7e38 11 تا 12 6
Double 5.0e-324تا 1.7e308 15 تا 16 8
extended 1.9e-4951تا 1.1e493 19 تا 20 10
انواع داده هاي اعشاري

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

String - :
اين نوع داده ها براي ذخيره رشته ها مثل اسامي افراد به كار مي رود و با كلمه كليدي string مشخص ي گردد
براي هر رشته بايد طول معلوم كنيم اگر طولي تعريف نشود به طور پيش فرض 80 در نظر گرفته ميشود(مقدار طول حداكثر 255 است)
- Boolean :
نوع ديگري از داده ها در پاسكال وجود دارند كه داده هاي بولي خوانده مي شوند مقادير بولي داراي دو ارزش درستي يا نادرستي اند كه در پاسكال با صفر و يك نمايش داده مي شوند صفر به معني نادرستي و يك به معني درستي به كار ميرود اين نوع داده ها با كلمه Boolean تعريف ميشوند.

 

دستورات ورودي در پاسكال:
دستور Readlnبراي خواندن اطلاعات از ورودي به كار ميرود.
فرمت آن به صورت مقابل است:
(اسامي متغيرها)read/ln
اسامي متغيرها بايد با كاما از يكديگر جدا شوند..
براي چاپ اطلاعات در خروجي از دستور write/ln استفاده ميكنيم.
فرمت آن به صورت مقابل است:
' يك پيام '
( متغير ) write/ln
عبارت محاسباتي
انتساب متغيرها:
مقدار ثابت
( متغير )=: متغير
عبارت محاسباتي

 

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

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

تكليف : چرا برنامه بايد ادب داشته باشد ؟

 

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

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

 

اولويت عملگرها:
/ *
- +
شرط:
then شرط if
Begin
____
____
____
end
else
begin
____
____
____
end;
نكته : دستورالعمل قبل از IF سمي كالن نمي گيرد
عناصر شرط:
< > <= >= = <>
اپراتورها :
AND OR NOT XOR
NOT A
1 0
0 1

XOR OR AND B A
0 1 1 1 1
1 1 0 0 1
1 1 0 1 0
0 0 0 0 0

 

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

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

 

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

Var
A,b,c:integer;
D,x1,x2:real;
Begin
Writeln('enter a,b,c');
Readln(a,b,c);
D:=b*b-4*a*c;
If (d >=0 ) then
Begin
X1:=(-b+sqrt(d))/2*a);
X1:=(-b-sqrt(d))/2*a);

 

مثال : برنامه اي بنويسيد كه تعداد فرزندان وحقوق پايه و رتبه يك كارگر را از ورودي دريافت و حقوق كل وي را بر اساس فرمول زير حساب كند.
كسريها - مزايا +بيمه = حقوق كل
5*رتبه +1000* تعداد فرزند = مزايا
ماليات + بيمه = كسريها
بيشتر كمتر يا مساوي 2 تعداد فرزند
تعداد فرزندان 1000 بيمه
هر چيزي ديگر 20 تا 0 رتبه
حقوق پايه حقوق پايه*100/10 ماليات

begin
writeln('enter salary and grade and number of child');
readln(salary ,num,grade);
if num<=2 then
bimeh:=100
else
bimeh :=num*500;
if (grade>=0) and (grade<=20)then
net := 10/100*salary
else
if grade >20 then
begin
net:=20/100*salary;
mazaya:=num*1000+grade*50;
kasry:=bimeh+net;
kol :=salary + mazaya-kasry;
end;
writeln(kol);
end.

 

تكليف : در يك تركيب شيميايي 4 عنصر شركت دارند مقدار مجاز براي تهيه ماده اي به نام asxd به اين صورت است.


A 0 ~ 50
S 0.5 ~ 0.83
X 81 ~ 92 or 824 ~ 901
D -100 ~ 100
با دريافت مقادير a,s,x,d از ورودي به ما بگويد كه آيا مي توان اين ماده را توليد كرد يا نه ؟
Begin
Num:=0;
Writeln('please enter a s x d');
Readln(a,s,x,d);
If (a>0) and(a<50) then
Num:=num+1;
If (s>0.5)and (s<0.83) then
Num:=num+1;
If ((x>81)and(x<92))or ((x>824)and(x<901))then
Num:=num+1;
If (d>-100) and (d<100) then
Num:=num+1;
If num=4 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 دارد
مقدارها ميتوانند شامل يك مقدار يا چند مقدار كه از يكديگر با كاما جدا شده اند باشند و يا يگ سري شمارشي باشند مثل:
1:------
1,10,28:------
1..100,150..243:---------
'A'..'Z':---------

Of متغير Case
Begin : مقدار1
-------
-------
End;
Begin : مقدار2
-------
-------
End;
Begin :Else
-------
-------
End;
End.

 

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

BEGIN
READLN(X);
CASE X OF
0:WRITELN('ZERO');
1:WRITELN('ONE');
2:WRITELN('TWO')
ELSE
WRITELN('ERROR');
END;
END.

 

مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و چنانچه عدد اول در بازه 0 تا 5 بود توان دوم عدد دوم را چاپ كند چنانچه 68 بود حاصلضرب دو عدد را چاپ كند و در غير اينصورت مقادير مجاز را چاپ كند.

BEGIN
WRITELN('ENTER TWO NUMBER');
READLN(A,B);
CASE A OF
0..5 :WRITELN(B*B);
68:WRITELN(A*B)
ELSE
WRITELN('ENTER 0..5 OR 68');
END;
END.
- معادل برنامه بالا با دستور If :

Begin
Writeln('enter 2 number');
Readln(a,b);
If (a>=0)and(a<=5) then
Writeln(b*b)
Else
If a=68 then
Writeln(a*b)
Else
Writeln('enter 0..5 or68');
End.
تكليف : روشي براي تلفظ اعداد پيدا كنيد.

 

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

 

مثال : برنامه اي بنويسيد كه توان دوم اعداد 100 تا 200 را چاپ كند.

Begin
For i:=100 to 200 do
Begin
Writeln(i*i);
End;
End.
نكته : اجازه نداريد مقدار متغير حلقه را در داخل بدنه عوض كنيد .

 

مثال : برنامه اي بنويسيد كه حاصلجمع اعداد 100..1 را چاپ كند.

 

Begin
Sum:=0;
For i:=1 to 10 do
Begin
Sum:=sum+i
End;
Write(sum);
End.

 

مثال : برنامه اي بنويسيد كه حاصلجمع مضارب 5 بين 0 تا 100را به دست آورد.

Begin
Sum:=0;
For I:=1 to 20 do
Begin
Sum:=sum+i*5;
End;
Writeln(sum);
End.

 

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

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

 

مثال : برنامه اي بنويسيد كه با يك حلقه for اعداد بين100..1 و738..353و 950..940 را چاپ كند

Begin
For i:=1 to 950 do
Begin
If ( i>=1) and (i<=100) then
Writeln(i);
If (i>353) and (i<=738) then
Writeln(i);
If (i>=940) and (i<=950) then
Writeln(i);
End;
End.
معادل برنامه بالا با استفاده از دستور case :

Begin
For i:=1 to 950 do
Case I of
1..100,353..738,940..950: writeln(i);
end;
end.

باقيمانده mod
مثال :
X mod y

 

مثال : برنامه اي بنويسيد كه مضارب 7 بين 1 تا 100 را چاپ كند

Begin
For i:= 1 to 100 do
Begin
If I mod 7 = 0 then
Writeln(i);
End;
End.

 

مثال : برنامه اي بنويسيد كه تعداد مضارب 5و7 را در بازه 231~846 چاپ كند.

Begin
K:=0;
C:=0;
For i:=846 downto 231 do
Begin
If I mod 5 = 0 then
C:=c+1;
If I mod 7 = 0 then
K:=k+1;
End;
Writeln('5=',c,'7=',k);
End;
End.

 

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

Begin
For i:=1 to 100 do
Begin
Writeln('enter salary and number of children');
readln(salary,num);
kol := salary + num * 1000;
writeln(kol);
end;
end.

 

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

Begin
Sum:=0;
For i:= 1 to 100 do
Begin
Writeln('enter num');
Readln(num);
Sum:=sum+num;
End;
Ave:=ave/100;
Writeln(sum,ave);
End.

 

تعداد تكرار نامعين :

Do شرط while
begin
___
___
___
end;

 

مثال : برنامه اي بنويسيد كه اعداد 100..1 را چاپ كند

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

 

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

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

 

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

Begin
Readln(num);
T:=1;
While num<>0 do
Begin
Sum:=sum+num;
Readln(num);
T:=t+1;
End;
Writeln('s=',s,'average',s/t);
End;.

 

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

Average: Sum: Ali Name:
3
18
20
13.5
program test;
var
name:string[10];
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:=1 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.

 

تكليف : ميخواهيم براي برنامه هاي خود يك منو تهيه كنيم اين منو شامل موارد زير است

1) load
2) save
3) edit
4) exit
please select a number :
program test;
var
num:integer;
begin
writeln(' 1) load');
writeln(' 2) save');
writeln(' 3) edit');
writeln(' 4) exit');
writeln(please select a number : ');
readln(num);
while num<>4 do
begin
case num of
1:writeln('loading');
2:writeln('saving');
3:writeln('editing');
end;
end;
end.

 

مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و طبق جدول زير نسبت به مقدار آن واكنش نشان دهد
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.

 

 



نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:







           
جمعه 25 فروردين 1391برچسب:پاسكال,آموزش,آموزش پاسكال, :: 18:7
M.A

درباره وبلاگ


به وبلاگ من خوش آمدید
آخرین مطالب
نويسندگان
پيوندها

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان آموزش کامل نرم افزارها به زبان فارسی و آدرس softwaretraining.LXB.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.







ورود اعضا:

نام :
وب :
پیام :
2+2=:
(Refresh)

<-PollName->

<-PollItems->

خبرنامه وب سایت:





آمار وب سایت:
 

بازدید امروز : 15
بازدید دیروز : 5
بازدید هفته : 24
بازدید ماه : 243
بازدید کل : 31898
تعداد مطالب : 51
تعداد نظرات : 2
تعداد آنلاین : 1




در اين وبلاگ
در كل اينترنت