زبان پاسكال يكي از زبانهاي برنامه سازي است كه ويژگيهاي آموزشي آن بسيار بالاست يعني زبان خوبي براي آموزش برنامه نويسي منظم و دقيق است.قابليت خوانايي و درك برنامه هاي اين زبان بالاست وميتوان برنامه هايي نوشت كه احتمال خطاهاي آنها بسيار اندك باشد علتش اين است كه يك زبان ساختار يافته (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.