آموزش پاسکال (قسمت دوم)
زبان پاسكال یكی از زبانهای برنامه سازی است كه
ویژگیهای آموزشی آن بسیار بالاست یعنی زبان خوبی برای آموزش برنامه نویسی
منظم و دقیق است.قابلیت خوانایی و درك برنامه های این زبان بالاست ومیتوان
برنامه هایی نوشت كه احتمال خطاهای آنها بسیار اندك باشد علتش این است كه
یك زبان ساختار یافته (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) و تلفظ آنها را چاپ كند.
READLN(X);
CASE X OF
0:WRITELN('ZERO');
1:WRITELN('ONE');
2:WRITELN('TWO')
ELSE
WRITELN('ERROR');
END;
END.
موفق باشید .