معدل 10 دانشجو را دریافت شاگرد اول تا سوم همراه با مکان آ نها در آرایه نمایش دهد.
پاسخ :
ابتدا سه آرایه تعریف می کنیم .آرایه 10 خانه ای a معدل دانشجو یان را در بر دارد .
آرایه 3 خانه ای b مکان شاگرد اول تا سوم را در خود ذخیره می کند.
آرایه 3 خانه ای c شاگرد اول تا سوم را در خود نگهداری می کند.
Program tamrin;
Var
a:array [1..10] of real;
b: array [1..3] of byte;
c:array [1..3] of real;
i,n:integer;
Max:real;
S:char;
Begin
Writeln(‘وارد کنید نمرات 10 دانشجو را؟”);
For i:=1 to 10 do
Begin
Write(‘enter’,i:2,’: ‘ );
Readln(a[i]);
End;
For n:=1 to 3 do
Begin
Max:=0;
For i:=1 to 10 do
Begin
If a[i]>max then begin
Max :=a[i];
b[n]:=i;
c[n]:=max;
End;
End;
a[b[n]]:=0;
End;
Writeln;
For i:=1 to 3 do
Begin
Write(‘a(‘,b[i],’)’);
Write(‘---> ‘,c[i]:3:2);
Writeln;
End;
Read(s);
End.
تمریناتی درمورد روال procedureو تابعfunction
1. سه عدد را خوانده و ماکزیمم آنها را باfunction بنویسید.
2. سه عدد را خوانده و ماکزیمم آنها را باprocedureبنویسید.
3. فرض کنید در یک فروشگاه یک4 نوع جنس با عناوینa,b,c,d, باقیت به ترتیب 25و20و12و5ریال موجود می باشد بر نامه ای بنویسید هر جنس با تعداد آن را در یافت قیمت نهایی را اعلام نماید شرط اتمام بر نامه وارد کردن حرفe باشد.
4. به طور کلی تفاوت روال و تابع در چیست؟
5. خروجی تابع زیر اگر n=40باشد چه مقداری است؟
6.
Function ad (n: byte):word;
Begin
If n=1 then
Ad: =1
Else
Ad: =ad (n-1) +n;
End;
پاسخ سوالات تشریحی
1)
Program t1;
Var
a,b,c :integer;
Function max (a,b,c: integer): integer;
Var
m: integer;
Begin
m:=a;
if b>m then m:=b;
if c>m then m:=c;
max:=m ;
End;
Begin
Write ('please enter a, b, c :');
Readln (a ,b ,c);
Write (max(a ,b ,c));
Readln;
End.
2)
Program t1;
Var
a, b, c, m :integer;
Procedure Max (a, b, c: integer; Var m: integer);
Begin
m: =a;
If b>m then m: =b;
If c>m then m: =c;
End;
Write ('please enter a, b, c :');
Readln (a, b, c);
Max (a, b ,c ,m);
Write (m);
Readln;
End.
3)
Program t3;
Label 10;
Var
Ch: char;
n, sum :integer;
Function call (ch: char; n: integer): integer;
Begin
Case ch of
'a', 'A': call:=n*5;
'b', 'B' : call:=n*12;
'c', 'C' : call:= n*20;
'd', 'D' : call:=n*25;
End;
End;
Begin
Writeln;
Writeln ('**** enter "E" to exit ****');
Sum: =0;
While true do
Begin
Write ('enter kind of (a, b, c, d) :');
Readln ( ch );
If (ch='e') or (ch='E') then goto 10;
Write ('enter numbers :');
Readln (n);
Sum:=sum+ call( ch , n);
End;
10:write('pay =' , sum);
Readln;
End.
4)
به طور کلی تفاوت روال و تابع در نحوه فراخوانی آنهااست.
5) این برنامه مقدارزيگما i ازi=1تا n=40 را محاسبه می کند می دانیم این مجموع برابر است با
n(n+1)/2
بنابراین داریم :
n=40 , 40(40+1)/2=820
خروجی 820است .
زیر بر نامه ها به صورت روال و توابع بیان می شوند در بر نامه نویسی ساخت یافته ،واحدی منطبق بر این است که اگر بر نامه بزرگتر را به قسمت های کوچکتر تقسیم کنیم نوشتن بر نامه آسانتر و بهتر خواهد بود که در زبان پاسکال به این قسمت های کوچک روال یا تابع می گویند در زیر روال ها می توان هر زیر روال را به طور جداگانه نوشته و اجرا کرده ودر صورت صحت آن را می توان به بر نامه اصلی اضافه کرد همچنین می توان در پاسکال متغیر ها را به روال و توابع انتقال داد .
تعریف روال در پاسکال
برا ی تعریف روال حداقل دو چیز نیاز داریم:
1. نام روال
2. یک بلاک کد
تفاوت بین روال و تابع عبارتند از:
1. فراخوانی یک روال به صورت دستوالعمل مستقل می باشد ولی فراخوانی یک تابع بایستی قسمتی از یک عبارت باشند به عبارت دیگر توابع مشابه متغیر ها می باشندکه مقدارآنها بستگی به پارامتر های انتقال داده شده به آنها دارد.
2. ازروال نمیتوان دردستورهای جایگزینی ومقایسه ای وعبارتهای حسابی استفاده کرد.
3. یک روال می تواندیک متغیری رابرگشت داده وسپس می توان ازآن درمتغیربه صورت عبارت های حسابی استفاده کرد.زمانی که نیازبه یک نتیجه مشخص معینی داشته باشیم معمولا از توابع استفاده می کنیم .یک پروسیجر به جای بر گشت دادن یک نتیجه مشخص و معین عملیاتی را انجام می دهد که ممکن است چند نتیجه را برگشت دهد یا هیچ نتیجه ای را بر گشت ندهد.
مقادیر ومتغیر ها در لیست پارامتر ها
وقتی در جلوی پارامتر ها Var قرار می دهیم با مراجعه به نام این پارامتر ها می توان آنرا به سابروتین وارد کرد و یا نتیجه گرفت . ولی در صورتیکه جلوی پارامتری Var قرار ندهیم ،مقدار آن پارامتر مورد نظر خواهدبود در حالت اول کامپیوتر محلی برای متغیر در نظر می گیریدو هر بار به آن محل مراجع می کند و محتوای آنرا انتقال می دهد . و این محتوا داخل و خارج برنامه قابل استفاده است .در حالت دوم کامپیووتر یک کپی از مقدار متغیر را به سابروتین می برد ومحلی را برای آن در نظر نمی گیردکه به تواند حاصل تغییر به بر نامه اصلی باز گردئد .تغییرات داخل سابروتین نیز روی کپی متغیر انجام می شود.بنابر این هر گاه تغییرات متغییری در داخل سابروتین مورد نظر مانیست آنرا بدون Var قرار می دهیم.
معرفی قبلی سابروتین ها
گاه اتفاق می افتد که یک سابروتین در بر نامه سابروتین دیگری را فرا مکی خواند. از آنجا که قبل از تعریف هیچ عاملی نمی توان از آن استفاده کرد سابروتین فرا خوانده شده باید قبلا معرفی شده باشد حال اگر قرار باشد گاه سابروتین 2 را فرا خواند و گاه سابروتین 1 را ،در اینجا اشکالی بوجود می آید . به شکل زیر توجه نمائید.
Procedure test1 (some: integer);
Begin
If some<10 then test2 ('y');
{………..etc.}
Procedure test2 (another parameter: char);
Begin
test1 (15);
{………..etc.}
End;
این اشکال به این صورت رفع می شود که از کلمه forward استفاده کرده سابروتین دوم را قبلا معرفی می کنیم گر چه سابروتین دومی به تفضیل شرح داده شده ولی معرفی آن قبا از سابروتین 1 مشکل را رفع می کند به بر نامه زیر توجه کنید :
Program test;
Var
A, b, c, x, y, z: integer;
Procedure proc (Var a, b: integer; c: integer);
Forward;
Procedure proc2;
BEGIN
Clrscr ;
Readln(x);
Proc(x, y, z);
Writeln(x: 10, Y: 10);
End;
Procedure proc2 (Var A, B: Integer; c: Integer);
Begin
Writeln (A: 10);
B: =A*A*A;
C: =100;
END;
{*******************************}
Begin
Proc1;
End.
مثال
1.برنامه فاکتوریل را با procedure بنویسید.
Program t1;
Var
N: Integer;
M: Longint;
Procedure fact (n :integer ; Var f: Longint);
Var
I: byte;
Begin
F: =1;
For I: =1 to n do
F: =F*I;
End;
Begin
Write ("please enter n:");
Readln (n);
Fact (n, m);
Write (m);
Readln;
End.
2. برنامه فاکتوریل را با Function بنویسید.
Program t2;
Var
N: Integer;
K: real;
Function fact (n: integer) Longint;
Var
I: byte;
f: Longint
Begin
F: =1;
For I: =1 to n do
F: =F*I;
Fact: =F;
End;
Begin
Write ("please enter n:");
Readln (n);
Write (Fact (n));
Readln;
End.
توابع و پردازه هاPROCEDURES & FUNCTIONS
پردازه و تابع دو نوع متفاوت از بر نامه های فرعی(زیر بر نامه ها) می باشند . تفاوت تابع با سابروتین آن است که یک مقدار را به بر نامه باز می گرداند , در حالی که پردازه چند مقدار را می تواند منتقل سازد . هر دو نوع می توانند شامل انواع ثابت و متغیر داده ها , پردازه ها و توابع باشند . اینها ایه بر نامه ریزی ساختاری هستند .
از محاسن وجود این دو نوع بر نامه فرعی موارد زیر را می توان بر شمرد .
1. را ه پی گیری اشکالات ودنبال کردن مسیراجرای دستورالعملهاراکوتاه می سازد .
2. تست بر نامه جزء جزء انجام می شود . هر بخش را جداگانه می توان برسی نمود .
3. در ک مسئله و اعمال تغیرات روی آن بسیار ساده تر می شود.
4. بساری از دستورات پاسکال که دستور العمل نامیده ایم در اصل پر دازه ها و تابع هایی هستند که بافر اخوانی آنها عمل را انجام می دهند. از آن جمله پر دازه WRITELNکه متغیر های خودرابه دستورالعملهای خروجی و یابه فایل های موردنظرمی فرستد.همچنین تابعsucc( ) که عدد 6 را پس از انجام عملیات داخلی به خودگرفته وبه برنامه بازمی گرداند.
دامنه انتقال متغییر ها در رابطه باپردازه و تابع
دو نوع متغیر در رابطه باپردازه ها وتوابع وجود دارد :
1. داده های فراگیر یا global
2. داده های محلی local
داده های محلی LOCAL
داده های فراگیر که در بالا ترین سطح بر نامه معرفی می شود در همه بر نامه های فرعی نیز دیده می شود.متغیر هایی که در داخل سابروتین ها تعریف می شوند محلی هستند و تغییرات آنها به خارج از سابروتین نفوذ نمی کند .
معرفی متغیر ها در پردازه و تابع
متغیر ها در قبل از اینکه بتوانند به کار روند باید معرفی کرد .به همین دلیل داده های فراگیر راباید قبل از همه در خط های اولیه معرفی کرد .همچنان ,سابروتین ها در قبل از اینکه فراخوانده شوند باید معرفی کرد.
چگونگی تعریف پر دازه ها و توابع
پردازه و توابع را باید پس از Varوقبل از بر نامه اصلی معرفی کرد معرفی هر پردازه یا تابع , اطلاعات زیر را شامل می باشد:
1. نام پر دازه که تابع ضوابط نام گذاری در تربو اسکال است.
2. نام پارامتر ها ونوع آنها هرقلم از اطلاعات که باید به بر نامه ها وارد شود, وهر اطلاعاتی که پس از پردازش از بر نامه صادر شود , باید در داخل پرانتز جلوی نام سابروتین آورده می شود.
3. در داخل پرانتز پارامترها می تواننند مقادیر باشندیا پارامتر های متغیری باشندکه قبل از آنها Var می آید . چنین پامتر هایی در داخل سابروتین تغییر کرده وتغییرات آن به خارج نفوذ می نماید.
4. در مورد تابع پس از پرانتز نوع اطلاعات باز گشتی به بر نامه اصلی که تحت نام خود تابع می باتشد , معرفی می گردد.نوع تابع لزوما" نباید با نوع رانتز آن یک باشدگرچه مثلا" تابع succ( ) همان نوعی از اطلاعات را برگشت می دهد که بکار می برد.
عبور وانتقال اطلاعات از پردازه هاوتوابع
وقتی یک سابروتین رابه کارمی بریم ،معمولا می خواهیم مقداری را به آن وارد و اطلاعاتی را از آن خارج سازیم. اطاعات وارده ،گاه ثابت هایی هستند که دذر طول سابروتین تغیر نمی کنند بطوریکه قبلا نیز اشاره شد متغیر های وارد صادره از سابروتین ها می توانند محلی یا فراگیر باشند
برای انتقال اطلاعات به سابروتین و بر عکس لیست پارامتر ها را جلوی نام سابروتین داخل پرانتز قرار می دهم. لیست پارامتر ها شامل نام متغیر ها ونوع آنها می باشد . در زمان فراخوانی سابروتین هانیز در بر نامه اقلامی از دادهخ ها را که می خواهیم،داخل پرانتز قرار می دهیم.
نکاتی که باید در تهیه لیست پارامتر ها در نظر گرفت:
1. باید دید چه پارامتر هایی مورد نیاز است .
2. در نظر گرفت کدام مقادیر باید به سابروتین داده شود . در جلوی این پارامتر ها باید کلمه Var ر ا قرار داد.
3. پارامتر هارا بایدنظم داد به تر تیبی که موقع فراخوانی نیز همان نظم را داشته باشد .
4. ترتیب و نوع پارامتر ها با اقلامی که موقع فراخوانی بکار می رود باید یکسان باشد.
سوالاتی درمورد دستورات کنترلی وشرطی
1) اعداد صحیح و مثبت n ,m را خوانده m را به توان n بر سانید ؟
2) بر نامه ای بنویسید که یک عدد صحیح و مثبت دریافت کند و اعداد اول 1 تا n را نمایش دهد ؟
3) برنامه ای بنویسید سه عدد از ورودی دریافت کند و maxآنها را در خروجی چاپ کند؟(بدون متغیر کمکی )
4) برنامه اي بنویسید كه دو عدد را از ورودي دريافت و چنانچه عدد اول در بازه 0 تا 5 بود توان دوم عدد دوم را چاپ كند چنانچه 68 بود حاصلضرب دو عدد را چاپ كندو در غير اینصورت مقادیر مجاز را چاپ كند.(با دستورif)
5) عدد صحیح و مثبت n را دریافت و فاکتور یل آن را در خروجی چاپ کند ؟
6) مجموع اعداد زوج سه رقمی را محاسبه و چاپ نماید ؟
7) برنامه ای بنویسید که توان دوم اعداد 100 تا 200 را چاپ كند؟
8) برنامه اي بنويسيد كه اعداد 100..1 را چاپ كند؟
پاسخ ها
۱)
Program t1;
Var
I, m, n: integer;
S: char;
P: Longint;
Begin
Writeln ('please enter m, n :);
Read (m, n);
Power: =1;
For a: =1 to n do
Power: = power*m;
Write ('power=', power);
Readln(s);
End.
به توان رساندن یعنی مقدار پایه را به تعداد توانش , در خود ضرب نماییم یعنی m را n بار در خودش ضرب کنیم پس یک حلقه درست می نماییم که از یک تا n ادامه داشته باشد و در داخل حلقه m را د ر خودش ضرب می کنیم بعد از اتمام حلقه m , n مرتبه در خودش ضرب شده است
1)
Program t2;
Lable10;
Var
n,m,a: longint;
s: char;
Begin
Write('Please Enter n: ');
Readln(n);
For m:=1 to n do
Begin
a:=2;
While a<=m/2 do
Begin
If ( m mod a=0 ) then goto 10;
a:=a+1;
end;
Write(m,' ');
10: end;
Read(s);
End.
2)
Program EXAMPL3;
Var
a, b , c: integer;
Begin
Readln (a, b, c);
If a>b then
If a>c then
Write (a)
Else
Write(c)
Else
If b>c then
Write (b)
Else
Write(c);
End.
3)
Program EXAMPL4;
Var
a, b: integer;
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.
5)
Program EXAMPL5;
Var
A , n: integer;
Fact: Longint;
BEGIN
Repeat
WRITELN ('ENTER n :');
READLN (n);
Until n>0;
Fact: =1;
For a: =1 to n do
Fact: = fact*a;
WRITELN ('fact=', fact);
Readln;
END .
6)
Program EXAMPL6;
Var
n, B: integer;
Sum: Longint;
Begin
Sum: =0;
N:=100;
While n<= 998 do
Begin
Sum: = sum+ n;
n:=n+2;
end;
write('sum=' ,sum);
Readln;
End.
7)
Program EXAMPL7;
Var
i: integer;
Begin
For i: =100 to 200 do
Begin
Writeln (i*i);
end;
End.
8)
Program EXAMPL8;
Var
i: integer;
Begin
I:=1;
While i<=100 do
Begin
Write(i);
I:=i+1;
End;
جملات شر طی را می توانیم به 3حالت های مطرح کنیم :
1) جمله شرطی می تواند از یک مقایسه مستقیم باشد
2) جمله شرطی می تواند شامل محاسبات باشد
3) جمله شرطی می تواند شامل چندین شرط باشد
دستورات شرطی
1) دستور If……….Then………..else
2) دستور case ………of
3) دستورgoto
دستورات کنترلی
1. دستور حلقهfor………do
2. حلقه while-do
3. حلقه Repeat-Until
دستورcontinue :
این دستور در حلقه های for , while و یا Repeat به کار می رود . هنگامی که به این دستور می رسیم , به ابتدای حلقه پرش می کنیم .
دستور break:
این دستور نیز همواره در یکی از حلقه های for ,whileو یا Repeat به کار می رود . این باعث می شود که در داخل حلقه پرش نمود و اجرای حلقه به طور کامل , خاتمه یابد .
نکته:
Longint: برای عداد بزر گتر و نشانه دار 4 بایت است .
Integer: می تواند حد اکثر 2 بایت اشغال کند.دستور label :
این د ستور در قسمت تعاریف بر نامه قرار می گیرد و وظیفه آن معرفی بر چسب های به کار رفته د ر بر نامه است .
Label ......و بر چسب دوم و بر چسب اول
دستور Goto:
ای دستور , کنترل بر نامه را به خطی که بر چسب آن مقابل دستور goto نوشته شده است منتقل می گر داند.
Goto بر چسب مر بوطه ;
هدف کلی:
گاهی در حین انجام یک بر نامه لازم است از یک سطر بر نامه به یک سطر دیگر که دستور خاصی در آن سطر قرار دارد ,پرش کنیم . این پرش توسط دستور goto انجام می گیرد .اما برای اینکه به مکانی رش کنیم ,باید آن مکان دارای اسم یا آدرس باشد , این اسم یا در اصطلاح بر چسب توسط دستور label معرفی می گردد.
مثال11:
بر نامه ای بنویسید که یک عدد صحیح و مثبت دریافت کند و اعداد اول 1 تا n را نمایش دهد .
Program EXAMPL11 ;
Lable10;
Var
n, m, a: Longint;
s: char;
Begin
Write ('Please Enter n: ');
Readln (n);
For m:=1 to n do
Begin
a:=2;
While a<=m/2 do
Begin
If (m mod a=0) then goto 10;
a:=a+1;
End;
Write (m,' ');
10: end;
Read(s);
End.
همانطور که مشاهده می نمایید بر چسب 10, توسط دستور label معرفی می شود .
دستور Exit :
سبب خروج از بلاک جاری (بلاک در حال اجرا)می شود . اگر بر نامه شامل چند بلاک باشد از بلاک جاری خارج می شود .
تابع Halt:
به اجرای بر نامه خاتمه می دهد .
دستورcontinue :
این دستور در حلقه های for , while و یا Repeat به کار می رود . هنگامی که به این دستور می رسیم , به ابتدای حلقه پرش می کنیم .
مثال12:
فر ض کنید حلقه ای داریم که متغیر شمارنده آن از 50 تا 150 را شمارش می کند می خواهیم اعدادی که در این فاصله هستند و بر عدد 3 بخش پذیرند , چا گردند .
Program EXAMPL12;
Var
a: integer;
Begin
For a: =50 to 150 do
Begin
If (a mod 3 <>0) then continue;
Write (a: 5);
End;
End.
دستور break:
این دستور نیز همواره در یکی از حلقه های for ,whileو یا Repeat به کار می رود . این باعث می شود که در داخل حلقه پرش نمود و اجرای حلقه به طور کامل , خاتمه یابد .
مثال13:
خروجی برنامه زیر چیست ؟
Program EXAMPL13;
Var
S: string;
Begin
While true do begin
Readln (S);
If S='exit' then break;
Writeln(S);
End;
Write ('good by ');
End.
جواب
حلق بی نهایتی داریم که در داخل آن یک عبارت رشته ای در یافت می شود و اگر عبارت رشته ای معادل 'exit ' باشد , بر نامه خاتمه می پذیرد و در غیر این صورت عبارت رشته ای در خروجی نمایش داده می شود .حلقه Repeat-Until
دستور Repeat-Until یکی دیگر از دستور کنترلی تکراری است که برای اجرای حلقه تکرار شرطی این دستور یبکار می رود.این دستور شبیه دستور While-Do است و از بعضی جهات این دو دستوزر کنترلی مکمل یک دیگر هستند.
دستور Repeat-Until به صورت کلی زیر است :
Repeat دستور یا دستورات until شرط
توجه: دنباله دستورات بین Repeatو until همیشه دست کم یک بار اجرا می شود زیرا عبارت شرطی تنها در پایان این دستور کنتر لی آزمایش می شود , که بر خلاف دستور While-Do است که در آن عبارت Boolean ( شرطی ) در آغاز دستور کنترلی آزمایش می شود ( اگر عبارت شرطی از همان ابتدا نادرست باشد , دستور While-Do اصلا اجرا نمی شود ) و بدین دلیل به حلقه Repeat-Until حلقه بی نهایت نیز می گویند و حلقه Repeat-Until نیاز به Begin و End ندارد اگر شرط مقابل Until درست نباشد حلقه تکرار خواهد شد پس پایان حلقه درست بودن شرط است مزیت این حلقه نسبت به حلقه های دیگر بی نهایت بودنش است.
مثال10:
برنامه ای بنویسید بی نهایت عدد را از ورودی خوانده و مجمو ع معدل را محاسبه و چاپ نماید اتمام بر نامه زمانی است که عدد صفر وارد گردد.
Program EXAMPL10 ;
Var
a, sum, ave: real;
n : integer;
s:char;
Begin
Sum:=0;
n:= -1;
Repeat
Write ('Enter Number :');
Readln (a);
Sum: = sum + a;
n:=n+1;
Until a=0;
ave:=sum/n;
Writeln ('sum=', sum: 1:2);
Write ('ave =', ave: 1:2);
Read(s);
End.
نکته:
مقدار اولیه n برابر1ــ می باشد و آن بدین علت است که عدد صفر منجر به اتمام حلقه می باشد , به عنوان یک ورودی شمرده می شود ودر معدل تاثیر خواهد گذاشت در صورتیکه ما نمی خواهیم عدد صفر رات به عنوان یک ورودی داشته باشیم . لذا مقدار اولیه n را 1ــ معرفی می نماییم تا صفر به عنوان اعداد خوانده شده,در نظر گرفته نشود.
2 ) حلقهWhile-Do
دستور While-Do یک دستور کنترلی تکراری است که برای اجرای حلقه تکرار شرطی بکار می رود.
این دسور به صورت کلی زیر است
While شرط Do دستورات
در حلقه While –Do قبل از اجرای بلاک برنامه عبارت شرطی مورد تست قرار می گیرد
اگرعبارت شرطی نادرست باشد بلاک بعد از حلقه اجرا نخواهد شد بدین ترتیب ممکن است این حلقه هیچگاه اجرا نشود.
اگر عبارت شرطی درست باشد بخش دستور به صورت مکرر اجرا می شود تا وقتی که ارزش عبارت شرطی نادرست باشد اگر بیش از چند دستور بخواهیم در حلقه بکار گیریم باید از Beginو End استفاده کنیم .
مثال 9:
یک عدد صحیح و مثبت در یافت و در صورتیکه ورودی عدد کامل بود پاسخ مثبت دهد ؟
Program EXAMPL9;
Var
n, a, sum: Longint;
s: char;
Begin
Write ('Please Enter n: ');
Readln (n);
Sum: =0;
a:=1;
While a<=n/2 do
Begin
If (n mod a=0) then sum:=sum + a;
a:=a+1;
End;
If n=sum then Write ('YES')
Else Write ('NO');
Read(S);
End.
توضیح:
عددی کامل است که با مجموع مقسوم علیه های کوچکتر از خودش ,برابر باشد.
به عنوان نمونه 6=1+2+3
بر ای بدست آوردن مجموع مقسوم علیه ها کافی است , هر بار که فهمیدیم که شمارنده 1 تا n/2 ما یا همان a ,مقسوم علیه عدد n است (فر مان if) ,مقسوم علیه بدست آمده را در داخل متغییر sum بریزیم .
بعد از اتمام حلقه ,مقدار sum با خود عدد مقایسه می شود و اگر دو مقدار برابر بودند ,nعد د کامل است .
کنترل تکرار بر نامه ها
برای تکرار بلاکی از بر نامه می توانیم به جای تکرار دستورات به تعداد مورد نیاز از دستورات حلقه استفاده کنیم در پاسکال انواع دستورات حلقه داریم که عبارتند از :
1)دستور حلقهfor………do
این دستور دارای یک شمارنده می باشد که مقدار اولیه و مقدار نهایی آن باید مشخص شده باشد
شکل کلی دستور for
For متغییر :=مقدار اولیه to مقدار نهایی do دستورات
Begin
دستوراتی که باید تکرار شوند
End
نکته :
زمانی از begin و end استفاده می کنیم که دستورات اجرای داخل for بیشتر باشد .
حلقه ها 2حالت می توانند داشته باشند :
1)افزایشی
در این حالت بین مقدار اولیه و مقدار نهایی عبارت toرا بکار می بریم بدین تر تیب مقدار اولیه کمتر از مقدار نهایی خواهد بود.
مثال 7 :
عددی صحیح و مثبت را گرفته اعداد کمتر از هزار که بر N بخش پذیر است را چاپ کند ؟
Program EXAMPL7 ;
Var
N, I: integer;
Begin
Write ('enter N :');
Readln (N);
For I=1 to 999 do
If (I mod N= 0) then write (I);
Readln;
End.
2)کاهشی
در این حالت بین عبارت مقدار اولیه و مقدار نهایی از عبارت down to استفاد ه می کنیم .بنابراین مقدار اولیه بیشتر از مقدار نهایی خواهد بود .
حلقه های to در to :
دستورات DO مقدار اتمام TO مقدار شروع =: متغیر FOR
---------------
---------------
دستورات DO مقدار اتمام TO مقدار شروع =: متغیر FOR
مثال 8 :
جدول ضرب 10*10را محاسبه و چاپ کند
Program EXAMPL8;
Var
a,b: integer;
Begin
For a: =1 To 10 Do
Begin
For b: =1 To 10 Do
Write (a*b: 5);
Writeln;
End;
Read(s);
End.
یادآوری : در دستور
Write(a*b:5);
عدد 5 فاصله مابین دو ستون را مشخص می کند و دستور Writeln در سطر بعدی فاصله ما بین دو سطر است و یا به عبارتی دیگر بین سطور فاصله ایجاد می کند
به طور کلی برای انجام پرش های شرطی می توانیم از دستور case استفاده به خصوص زمانی که پرش های چند شاخه ای نیاز داشته باشیم.شکل کلی دستور caseبه شکل زیر است :
Case نام متغییری که شرط بر روی آن اعمال می شود of
دستور1: شرط 1
دستور2: شرط2
دستورn: شرط n
End
نکته:
علامت آخر end بستگی به محل قرار گیری آن دارد امکان دارد سمیکالن یا نقطه باشد ودر ضمن به دستور قبل از end در شرطcase می توان سمیکالن نگذاشت.
مثال:
Case traffic of
Red: Write ('stop');
Green: write ('go head');
Amber: write('stop if possible, else go head')
End;
مثال:
Case key of
'A'. . 'Z': write ('uppercase');
'a' . . 'z': write('Lowercase');
'0'. . '9': write('numeric');
End;
مثال6:برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و چنانچه عدد اول در بازه 0 تا 5 بود توان دوم عدد دوم را چاپ كند چنانچه 68 بود حاصلضرب دو عدد را چاپ كند و در غير اينصورت مقادير مجاز را چاپ كند.
Program EXAMPL6;
Var
A,B: integer
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.
2)دستور If……….Then………..else
در بر خی موارد یک بر نامه نیاز به 2شاخه شرطی دارد در این حالت از دستور شرطی به صورت If……….Then………..else استفاده می کنیم که یکی از آنها در صورت درست بودن شرط اجرا خواهد شد در این حالت اگر نتیجه ارزش یابی جمله بولین یا بولی درست باشد بلاکی از بر نامه که بعد ازدستورالعمل then قرار دارد اجرا خواهد شد ولی اگر نتیجه ارزش یابی نادرست باشد بلاکی از بر نامه که بعد از else قرار دارد اجرا خواهد شد در هر دو حالت پس از اجرای بلاک انتخاب شده کنترل برنامه به دستور العمل If……….Then………..else منتقل می شود فلوچارت آن به شکل زیر می باشد .
If……….Then………..else
نکته :
قبل از دستور else از سمیکالن استفاده نمی کنیم .
مثال3:
برنامه ای بنویسیدکه عددصحیح را در یافت کرده و تعیین کند زوج است یا فرد ؟
Program EXAMPL3;
Var
N:integer;
Begin
Read(N);
If N mod 2=0 then
Writeln('p');
Else
Writeln('q');
End.
حالت یافته if…….then…..else
If……….then
Else
Else
Else
در حالت گسترش می توانیم با استفاده از if …..else توسعه را انجام دهیم .
به این تر تیب جملات بولی پشت سر هم بیان می شود ودر نتیجه می توان پرش های چند شاخه ای را انجام داد بر نامه پس از رسیدن به نتیجه false در مورد عبارت شرطی اول اجرای بلاک برنامه عبارت false شرط دوم را ارزشیابی میکند تا اینکه دستور if ……Else وارد عمل شود اگر این عبارت هم false باشد آخرین بلاک برنامه اجرا می شود.
مثال4:
خروجی بر نامه چیست؟
Program EXAMPL4 ;
Var
Mess:char;
Begin
Writeln(' کاراکتری با حروف بزرگ وارد کنید ');
Read(Mess);
If Mess='A' then
Writeln('Add')
Else if Mess='I' then
Writeln('Insert')
Else if Mess='D' then
Writeln('Delete')
Else if Mess='E' then
Writeln('Exit');
Writeln('press enter ' );
Readln;
End.
جواب :
یک منو شامل دستورات
|
A: Add I: Insert D: Delete E: Exit |
دستورات تودر تو در if ……then
هر گاه بخواهیم 2 یا چند شرط رامختلف را به منظور انجام کار ی تعریف می کنیم از if ……then تو در تو استفا ده می کنیم .
مثال5:
سه عدد را خوانده و بزرگتر و کوچکتر را چاپ کند ؟
Program EXAMPL5;
Var
A,b,c,min,max:integer;
Begin
Readln(a ,b, c);
Max:=a;
Min:=b;
If b>Max then
Max:=b;
If a min:=a; If c>max then Max:=c; If c Min:=c ; Writeln('larg:', max , 'smol:',min ); Readln; End.
جملات شرطی
جملات شر طی را می توانیم به حالت های مختلفی مطرح می کنیم .
1. جمله شرطی می تواند از یک مقایسه مستقیم باشد .
مثال:
Age>12 یا x 2. جمله شرطی می تواند شامل محاسبات باشد . مثال: x>(12*a) یا (x-5)<(y-5)+(x+5) 3. جمله شرطی می تواند شامل چندین شرط باشد . مثال: (age >21) and (name='Sara') x>=12 or y<=x مثال1: خروجی برنامه زیر چیست؟ Program EXAMPL1; Var i, j: integer; i:=9 ; y:=-47; Writeln (' i or J>0=' , i or J>0); Writeln; Writeln ('( i>0) or (J>0) =' , ( i >0) or ( J>0)); Writeln; Writeln ('presenter.'); End. جواب:
i or J
|
9+ ( - 47) |
|
9 - 47 |
|
- 38<0 |
|
false |
|
T=1 |
|
F=0
|
دستورات شرطی
1) دستورthen ...... If
دستور If یک دستور کنترلی شرطی است و تنها در صورتی که شرط مقدار درست داشته باشد یا نادرست اجازه می دهد عملی انجام شود .
کاربرد دستور
برای تصمیم گیری در داخل بر نامه از این دستور استفاده می کنیم و ساده ترین شکل پرش به قسمت های دیگر بر نامه می باشد.
نکته :
به دستور If اغلب دستورthen ..... If هم می گویند.
دستور If …… then دو حالت دارد ؟
حالت 1:
1) If شرط then دستورات
مثال2:
بر نامه ای بنویسید که سن را بخوهد و اگر سن شخص بزرگتر و مساوی 20 باشد بنویسد very good""
Program EXAMPL2;
Var
age: integer;
Begin
Writeln (' enter age :');
Read(Age) ;
If Age>=20 then
Writeln (' very good');
Writeln ('enter age :');
Readln;
End.
نکته :
اگر بخواهیم بیش از یک دستور العمل را به طور شرطی اجرا کنیم دستورالعمل های مورد نظر را داخل کلمات begin و end قرار می دهیم .
If شرط then ….
Begin
دستورات
End;
دستورات بعدی برنامه
سوالات تشریحی
1) برنامه ای بنویسید که 4 عدد راخوانده میانگین آنهارا حساب کند؟
2) بر نامه ای بنویسید که مبلغ n را بگیرد و برای ما مشخص کند این مبلغ از چند سکه 10 ریالی چند سکه 5 ریالی چند سکه 2 ریالی و یک ریالی تشکیل شده است ؟
3) برنامه اي بنويسد كه معدل سه دانشجو را از ورودي بخواند ومعدل هر دانشجو را در جلو نام آن در خروجي چاپ كند .( در ابتدا نام سه دانشجو خوانده شده و در ادامه معدل آنها از ورودي خوانده شود)؟
4) هدف از قرار دادن Ln در پایان دستور خواندن و نوشتن چیست؟
پاسخ
Program t1;
Var
a , b, c, d,s: integer;
Begin
Readln (a, b, c, d);
S:=(a+b+c+d);
Writeln(s div 4);
Readln;
End.
2)
Program t2;
Var
X, y, z, w, n: integer;
S: char;
Begin
Readln (n);
X:= n div 10 ;
n:= n mod 10;
y := n div 5;
n:= n mod5;
z:= n div 2 ;
n:= n mod 2;
w:= n div 1 ;
n:= n mod 1;
Writeln('10R=' ,x , '5R=' ,y , '2R=',z, '1R=',w,);
Read(s);
End.
3)
Program t3 ;
Var
n1,n2,n3:string[30]; { نام سه دانشجو}
a1,a2,a3:real; {معدل سه دانشجو}
s:char;
Begin
writeln(n1,n2,n3);
readln(a1,a2,a3);
writeln(n1,a1);
writeln(n2,a2);
writeln(n3,a3);
read(s);
End.
4) Ln در دستورات به معنی این است که دستور در سطر جدا گانه اعمال شود.
مثال 1:
برنامه ای که 2 عدد صحیح را از ورودی خوانده و حاصل جمع و حاصل تقسیم را محاسبه کند؟
Program EXAMPL1;
Var
n1, n2: integer;
a1, a2: real;
Begin
Readln (n1, n2);
a1:=n1+n2;
Writeln (a1) ;{{ حاصل جمع
a2:=n1/n2;
Writeln (a2) ;{ حاصل تقسیم}
End.
این پاسخ یک ایراد اساسی دارد.ابتدا بزرگترین مشکل مثال بالا را پیدا کنید ؟
جواب:
1- وقتی در این حالت بر نامه را اجرا می کنید خروجی را نخواهید دید ولی می توان متغییر از نوع کاراکتر در قسمت Var تعریف کنیم و در پایان بهend پایانی مانده دستور;(read(sرا قرار می دهیم تا کامپیوتر منتظر بماند شما یک کلید را به عنوان ورودی را وارد کنید و این باعث می شود شما خروجی بر نامه را تا هنگامی که کلید ی فشار ندادید ببینید.
نکته :
به جای تعریف یک متغییر از نوع charو در پایان read کردن آن می توانیم تنها از Readln خالی در پایان بر نامه استفاده کنیم .
مثال 2:
2- مثال را طوری بنویسید که در هنگام اجرا متنی بنویسید که اعداد صحیح را وارد کنید و نیز در مقابل خروجی بنویسید که کدام خروجی مربوط به حاصل جمع است و کدام خروجی مر بوط به حاصل تقسیم است؟
جواب:
Program EXAMPL2;
Var
n1, n2: integer;
S: char;
Begin
Writeln (2عدد صحیح را وارد کنید );
Readln (n1, n2);
Writeln ('n1+n2', n1+n2);
Writeln ('n1/n2', n1/n2);
Read;
End.
نکته :
الزامی وجود ندارد که یک بر نامه پاسکال هم از دستور ورودی و هم از دستور خروجی استفاده کند اگر چه بیشر برنامه ها این گونه هستند زیرا اکثر بر نامه ها داده های ورودی را در یافت می کنند ودر زمان اجرا٬ اطلاعات خروجی تولید می کنند.
مثال3:
بر نامه ای بنویسید مقدار دو متغییر a=3 وb=1 را جا بجا کند ؟
Program EXAMPL2;
Var
n1, n2, temp: integer; {وظیفه نگهداری موقت داده ها temp}
Begin
a:=3;
b:=1;
Temp: = a;
a:=b;
b:=temp;
Writeln ('a=', a),
Writeln ('b=', b);
Readln;
End.
نكته:
دلیل استفاده از متغییر temp این است هنگامی که مقدار جدید را به متغییر ی واردمی کنیم ٬محتویات متغییرقبلی ازبین می رودومقدارجدیدجایگزین می شود برای جلوگیری از این عمل ٬باید مقدار اولیه را در متغییر دیگری ذخیره کنیم .
خلاصه
د ستورات ورودی
دستور خواندن داده ها
Read (نام داده); و Readln (نام داده);
دستور نوشتن در خروجی
Write ( ); و Writeln ( );
Ln در دستورات به معنی این است که دستور در سطر جدا گانه اعمال شود.
دستورات جایگزینی
1- داده های ثابت در متغییری ذخیره می شوند .
Л: =3.14;
2-مقدار یک متغییررا در متغییر دیگر ذخیره کند .
نکته :همیشه مقدار سمت راست در متغییر سمت چپ ذخیره می شود .
A: =x;
A: =x یعنی مقدار متغییر x را در متغییر Aقرار گیرد
3- مقدار یک عبارت محاسباتی را در یک متغییر ذخیره می کند .
Z :=( 10+2)*12;
دستورات پاسکال
د ستورات ورودی
دستور خواندن داده ها
Read (نام داده);
Readlnشکل دیگر دستور خواندن داده ها است با این تفاوت که پس از انجام عمل خواندن کنترل بر نامه به خط بعدی منتقل می شود .
Readln (نام داده);
دستورات خروجی
دستور نوشتن در خروجی
Write ( );
Writeln شکل دیگر دستور نوشتن در خروجی با این تفاوت که پس از انجام عمل چاپ کنترل به خط بعدی منتقل می شود.
نکته :
1-بعد ازاتمام هر دستوراز سمیکالان ; استفاده می کنیم .
2-Ln در دستورات به معنی این است که دستور در سطر جدا گانه اعمال شود.
ادامه مطلب
|
داده ها |
1.داده ها ی ساده |
-1.1داده های عددی |
|
-1.1.1داده های عددی صحیح | |
|
-1.1.2د اده های اعشاری یا حقیقی | |||||
|
-1.2داده های غیر عددی |
|
-1.2.1کاراکتر | |||
|
Boolean-1.2.2 | |||||
|
2.داده های پچیده |
-2.1آرایه های متغییر ی |
| |||
|
-2.2رکورد ها | |||||
|
-2.3رشته ها | |||||
مربوط به متغیر ها Var
متغیر نامی است برای محلی از حافظه داده می شود و برای نگه داری موقت داده بکار می رود برای متغیر از کلمه Var استفاده می کنیم شکل کلی استفاده از متغیر ها در طرح زیر می باشد :
Var مثال
I = integer;
Name: char;
N, M, p : real ;
; درستی یا نادرستی) ) T: Boolean
مربوط به کلمه type
کلمه type برای تعریف داده پیچید به کار می رود
مثال:شکل دستور در آرایه به صورت زیر است :
Type
Index=1..20
Var
List: array [index] of real
انواع داده ها
داده ها در کل دو نوع هستند :
1. داد ه های ساده
2. داده های پیچیده
داده های ساده
داد ه های ساده به مجموعه ای از داده ها می گوییم که نتوانیم آنها را به شکل ساده تر تقسیم کنیم .
1. داده های عددی
داده های عددی عبارتند از :
i. اعداد صحیح integer
ii. اعداد اعشاری real
داده های عددی صحیح :( integer)
اجازه استفاده از ممیزو توان را نداریم برای مشخص شدن شان از integer استفاده می شوند این داده ها 2 بایت از حافظه را برای خودشان تخصیص می دهند .و می توانیم قبل عدد علامت عدد را هم درج کنیم و اگر عددی علامت نداشته باشد یعنی آن عدد مثبت است .
نکته: اعداد صحیح در دامنه -32768تا 32767 می باشد
Byte 0.. 65535
Short int -128 تا 127
integer -32768 تا 32767
Word 0.. 65535
Longint -2147483648 تا 2147483647
داده های عددی اعشاری یا حقیقی :((real
زمان اجرا از اعداد صحیح حافظه اشغال می کند .6 بایت از حافظه را اشغال می کند .
نکته:اعداد اعشاری در دامنه 39-2/9*10 تا 1/7*1038 تغییر می کند .
|
Memory required (bytes) |
Significant digits |
Range |
type |
|
6 |
11-12 |
2.9e-39 1.7e38 |
real |
|
4 |
7-8 |
1.5e-45 3.4e38 |
single |
|
8 |
15-16 |
5.0e-324 1.7e308 |
double |
|
10 |
19_20 |
3.4e-4932 1.1e4932 |
extended |
|
8 |
19_20 |
-2e63+1 2e63-1 |
comp |
در مورد اعداد اعشاری به نکات زیر توجه کنید:
1. اگر روی دو نوع عدد اعشاری و صحیح عمل محاسباتی انجام دهید , نتیجه یک عدد اعشاری خواهد بود . عدم توجه به این نکته می توان در نوشتن بر نامه مشکلاتی ایجاد کند .
2. کامپیوتر اعداد اعشاری را به نماد اعشاری نشان می دهد .
2.داده های غیر عددی
دو نوع می باشند :
1. داده های نوع متن
2. داده های boolean
دو نوع داده متن در پاسکال وجود دارد:
1. داده نوع کاراکترchar
2. رشته کاراکتر ها یا string
داده های کاراکتری :( char)
کراکتر یک حرف الفبا یا یک رقم و یا یک علامت ویژه است .مثل 'g'یا'5'یا'&' و باید داخل آپوستروف باشد .از char, برای پاسخگویی به سوالات صفحه نمایش و از رشته,جهت دادن پیغام به اپراتور استفاده می شود . نوعی از داده ها به نام text نیز وجود دارد که به عنوان نوعی فایل مورد استفاده قرار می گیرد .داده های کاراکتری شامل یک کاراکتر از جدول اسکی می باشدو یک بایت از حافظه را اشغال می کند که طولشان یک کاراکتر می باشد .مثل 'a'
نکته:
اگر کاراکتر ی را به خواهیم به صورت خنثی در نظر بگیریم داخل علامت کوتیشن قرار می دهیم.
رشته ها (string):
(لازم بذکر است که داده رشته ایی فقط در توربو پاسکال موجود است)
برای ذخیره سازی اطلاعات متنی بکار می ر وند حالت آنها شبیه آرایه هاست . مثلاً کلمه program آرایه ای است که محتوای آن حروف کلمه هستند .
S name: String [20];
وقتی می گوییم[20] String یعنی 21 بایت از حافظه را اشکال می کند اولین بایت مربوط به طول رشته است .
داده های boolean یاداده های نوع منطقی
ارزش این نوع داده به یکی از دو صورت زیر است :
1. درست یا true
2. نادرست یا false
این نوع داده ها را boolean یا د اده های بولی بنام George Bool دانشمند ریاضی می نامند .
غیر عددی ساده ترین داده در برنامه نویسی است .
داده های پیچیده
داده های پیچیده شامل موارد زیر می باشد :
نکته : برای تعریف داده های نوع پیچیده از کلمه type استفاده می کنیم .
آرایه :
آرایه را به صورت یک جدول یک بعدی (سطر یا ستونی)و یا دو بعدی و یا جند بعدی در نظر بگیرید . ابتدا باید نام آرایه ,سپس تعداد عناصر و نوع آنها را مشخص نمود . به هر عنصر از آرایه توسط نام آن و اندیسی که داخل کروشه می گذاریم مراجعه می نماییم.در کل آرایه متغییری است که داده های متعددی را که همگی از یک نوع می باشند را درخود ذخیره می کند شکل تعریف آن به صورت زیر می باشد.
نام متغییر =array[lowerlimit(حد پایین)• •uplimit((حدبالا]of basetype(نوع ارایه) ;
مثال :
نام آرایه avrageمی خواهیم معدل های بین 20 تا 12 را اعشاری و صحیح نشان دهد ؟
Average= array [12 ••20] of real
رکورد :
یک رکورد ترکیب چند نوع داده در داخل یک نوع داده جدید می باشد .مثلا اطلاعات دانشجویی ,می تواند شامل نام دانشجو, آدرس و معدل نمرات او باشد و یک رکورد را در بخش type معرفی می کنیم و معرفی آن با کلمه end پایان می پذیرد.
Record Type = record
Field 1 name : field 1 Type ;
Field 2 name : field 2 Type ;
end;
حالت ترکیبی در یک رکورد امکان پذیر است همچنین یک رکورد می تواند از نوع ساده یا ترکیبی باشد مثلاً رکورد Address (آدرس) یا Age (سن)
مثال برای Age :
Age : integer (صحیح )
YY : (سال )
MM : ( ماه )
DD : ( روز )
مثال
برای رکورد Student
Student = record
نام Sname : String (رشته) [15] (طول رشته );
سن Age : integer صحیح));
end;
داده های نوع اشاره گر (pointers)
این نوع داده ها آدرس متغییر ها را در خود دارند.
Type
My first pointer=^integer;
My second pointer=^ My pointer data item;
My pointer data item=record
Name: string10;
Age : integer;
Paid : boolean;
End;
Var
Numptr : My first pointer ;
Recptr : My second pointer ;
ثابت Const
یک مقدارعددی یا یک رشته را به یک شناسه نسبت دهیم یعنی اگر عنصر داده در سراسر بر نامه ثابت باقی بماند .
تعریف یک ثابت به صورت کلی زیر است :
Const
نام شناسه =مقدار ثابت ;
انواع عملگرها :
در یک محاسبه عملی که روی داده ها انجام می شود عمل گر می گویند و داده هایی که روی آنها این عمل انجام می شود عمل وند می گویند .
3 نوع عملگر وجود دارد :
1- عمل گرهای حسابی یا ریاضی یا محاسباتی :
عمل گر هایی که برای انجام عملیات عددی به کار می روند عملگر های محاسباتی گویند.در پاسکال، شش نوع عملگر محاسباتی وجود دارد .در پاسکال عمل گر توان وجود ندارد.
عملگر های پاسکال عبارتند از :
1. (جمع) +
2. (تفریق) ـــ
3. (تقسیم ) /
4. div
5. (ضرب) *
6. mod
در برنامه نویسی عملگرها برای انجام محاسبات جبری باید داخل یک متغیر قرار گیرند .
در توربو پاسکال دو نوع تقسیم وجود دارد :
1. تقسیم خارج قسمت صحیح
2. تقسیم خارج قسمت اعشاری
Div =این عملگر محاسباتی ٬تقسیم بین دو عملوند صحیح را انجام و جزء صحیح را به عنوان نتیجه اعلام می کند.
/= تقسیم اعشاری با علامت / عمل می شودو در تقسیم اعشاری , عوامل تقسیم می توانند هر عددی باشند خارج قسمت اعشاری است .
Mod = این عملگر محاسباتی ٬تقسیم بین دو عملوند صحیح را انجام و باقی مانده را به عنوان نتیجه اعلام می کند.
|
منفی یکانی : علامتی که در کنار عدد می آید |
|
-3+4 |
1- اول منفی یکانی یا مثبت یکانی
2- پارانتز ()
3- توان ^
4- ضرب *
5- تقسیم /
6- جمع +
7- تفریق –
2- عمل گرهای منطقی :
برای داده هایی چون بولیین و رشته وکاراکترکاربرددارد.عمل گرهای منطقی عبارتند از:
AND, OR, XOR, NOT
برای اینکه بیت های متناظر دو متغیر بایتی را یعنی 8 بیت را با 8 بیت دیگر مقایسه کرده و یک بایت جدید ر ا بدست آور یم از این متغیر استفاده خواهیم کرد
اگر به عملگر های محاسباتی عملوند integer بدهیم نتیجه چگونه خواهد بود؟
|
عمل گر محاسباتی |
عملوند ها |
نتیجه |
|
+ |
integer |
integer |
|
ــــ |
integer |
integer |
|
* |
integer |
integer |
|
/ |
integer |
Real |
|
Div |
integer |
integer |
|
Mod |
integer |
integer |
اگر به عملگر های محاسباتی عملوند Real بدهیم نتیجه چگونه خواهد بود؟
|
عمل گر محاسباتی |
عملوند ها |
نتیجه |
|
+ |
Real |
Real |
|
ــــ |
Real |
Real |
|
* |
Real |
Real |
|
/ |
Real |
Real |
نکته : با عملوند اعشاری نمی توان از عملگر mod ,div استفاده کرد .
3.عمل گر های مقایسه ای
بیشتر در شرط ها به کار می رود
نماد های توربو پاسکال :
یک نماد یک کاراکتر یا دنباله ای از کاراکتر هاست که معنی خاصی را در زبان های سطح بالا دارد .
نماد ها ی پاسکال عبارتند از :
نماد فاصله : برا ی جدا کردن اجزای یک برنامه به کار می رود .
# نماد چند : برای نشان دادن کد های اسکی به کار می رود
کدهای اسکی : کد های مختلفی برای کاراکتر ها وجود دارد که کد های همه کامپیوتر ها بر ابر باشد که اسکی می گویند . نحوه استفاده محیط dos در کد های اسکی Alt+ key pack آن کاراکتر هایی که در صفحه کلید نباشد کاراکتر های بالا ی 198یا کاراکتر های ویژه می نامند. هر خط فرمان 255کاراکتر قبول می کند .
$ :کاراکترفوق برای اعداد مبنای 16 به کار می رود هگزا دسیمال
و: برای مشخص کردن شروع و پایان یک رشته به کار می رود .
{ }: برای واردکردن توضیحات درقسمت های مختلف برنامه به کار می رود. مانند (* *)
( ): برای نشان دادن شروع و پایان عبارت و list های مختلف به کار می رود .
(* *):برای واردکردن توضیحات درقسمت های مختلف برنامه به کار می رود .
*: به عنوان ضرب به کار می رود .
+: برای سه کار به کار می رود.
۱.اجتماع مجموعه هاست .
۲.برای الحاق یا اتصال رشته ها به کار می رود
۳.جمع
ــــ : برای سه کار به کار می رود.
۱.جدا کردن اعداد
۲.برای منفی کردن اعداد
۳.اشتراک مجموعه
. :برای انتخاب فیلد های یک رکورد به کار می رود همچنین به عنوان علامت ممیزدراعداد به کار می رود.
• • : برای جدا کردن محدوده آرایه به کار می رود . ماتریس –درایه = مجموعه عناصر که درکنار هم جمع می شوندحداکثرمقدارحد بالا وحداقل مقدارحدپایین مثال : ["A" • • "Z"]
/ :علامت تقسیم و تقسیم اعشاری
\: برای محاسبه باقی مانده صحیح
: : برای تعریف شناسه ها بکار می رود .
=: : برای جای گزینی مقادیر به کار می رود. مثال :وقتی می خواهیم بگوییم X=10 باید در برنامه به صورت X :=10 بنویسیم .
; : برای جدا کردن جملات و پایان دادن به تعریف ها به کار می رود .
@ :برای بدست آوردن آدرس یک شناسه به کار می رود .
[ ]: کوروشه باز برای مشخص کردن شروع یک اندیس آرایه و کروشه بسته برای مشخص کردن پایان اندیس یک آرایه به کار می رود .
^ : برای بدست آوردن مقدار یک اشاره گر به کار می رود .
> علامت کوچکتر < علامت بزرگتر٬ =< علامت بزرگتر مساوی ٬ => علامت کوچکتر مساوی ،<> علامت مخالف
نکته:برای استفاده از هر شناسه ای باید قبل از بکار بردن آن تعریف کرده باشیم .
کلمات رزرو شده (کلمات کلیدی )
کلماتی که منحصرا توسط یک زبان استفاده می شوند و نمی توان از آنها برای موارد دیگر استفاده کرد مثلا begin شروع کردن –const ثابت کردن –writeنوشتن
کلمات رزرو شده
|
Procedure |
function |
unit |
Nil |
program |
|
Writeln |
write |
Readln |
read |
then |
|
down to |
record |
array |
for |
word |
|
Not |
of |
or |
and |
forward |
|
File |
case |
const |
real |
end |
|
Div |
else |
begin |
if |
do |
|
Char |
byte |
while |
integer |
in |
|
mod |
pointer |
with |
label |
Var |
|
|
|
label |
Go to |
type |
شناسه
شناسه کلمه ای است که به وسیله آن به یک محل حافظه مراجعه می کنیم شناسه دارای 2 قسمت است :
1. شناسه استاندارد
2. شناسه تعریف شده توسط کاربر
· شناسه استاندارد
همچون کلمات رزرو شده هستند که در پاسکال تعریف خاصی دارند .اما بر خلاف کلمات رزرو شده می توانند برای اهداف خاصی ٬توسط برنامه نویس مجدا تعریف و مورد استفاده قرار گیرند با این وجود این کار توصیه نمی شود اگریک شناسه استاندارد را مجدا تعریف کنید پاسکال دیگر قادر نخواهد بود آن را با هدف اصلی اش بکار برد .
· شناسه تعریف شده توسط کاربر
شناسه نامی است که به برخی از عناصر برنامه مانند ثابت ,متغیر, زیر برنامه procedure یا تابع٬یا برنامه نسبت داده می شود .
1) یک شناسه بایستی با یک حرف کاراکتر یا زیر خط شروع شود.
2) شناسه می تواند شامل تعداد حروف و ارقام، زیر خط باشد .
3) شناسه از کلمات رزرو شده پاسکال نمی تواند باشد .
حداکثر طول یک شناسه به سیستم بستگی دارد و برخی کامپایلر ها کلیه کاراکتر هایی که بیشتر از طول خاصی در شناسه قرار گیرند نادیده می گیرند برای مثال ٬ اگر حداکثر طول 8 باشد ٬نمی توان هردو شناسه consonant2٬ consonant1 را در بر نامه تعریف کرد ٬ زیرا هر دوی آنها به عنوان یک شناسه در نظر گرفته می شوند و 8 کاراکتر اول هر دو یکی است.و امکان دارد در بعضی سیستم ها 64 کاراکتر اول هر دورا با هم مقایسه کنند .
ثابت:
ثابت مقداریست که تغییر پیدا نمی کند ثابت های توربو پاسکال بصورت عددی یا رشته ای می باشد .
ثابت عددی :
به صورتهای مختلفی نشان داده می شوند. مثلاً عدد 45 مثلاً 2- و 201
ثابت رشته ای:
مقدار آن ها رشته محسوب شده داخل علامت کوتیشن " computer "
در توربو پاسکال ثابت ها دو نوع می باشند :
1) ثابت های بدون نوع (const ) X=45 یا Test="Turbo"
2) ثابت های دارای نوع( =20 (canst صحیح x=integer è
دلایل استفاده از ثابت ها:
برا ی صرفه جویی در حافظه بهتر است از ثابت های دارای نوع استفاده کنیم دارای تغییر دادن هستند .
به عبارت دیگربه صورت متغییر عمل می کنند که دارای مقدار اولیه استولی ثابت های بدون نوع غیر قابل تغییر هستند .
تفاوت ثابت و متغییر
ثابت داده ای که در طول بر نامه تغییر نمی کند در حالیکه داده متغییر در زمانهای مختلف مقادیر متغییر را در خود دارد ثابت و متغییر می توانند هر یک از انواع داده را شامل باشند .
ساختار بر نامه پاسکال هر بر نامه دارای 3 قسمت اصلی است:
بخش عنوان :
از کلمه PROGRAM استفاده می کنیم به دنبا ل کلمه PROGRAM نام برنامه می آید و انتهای آن; قرار میدهیم . نکته :نا م بر نامه نمی تواند از کلمات رزرو شده باشد .
PROGRAM نام برنامه;
هربرنامه می تواند شامل زیر بر نامه باشد هر زیر بر نامه به صورت برنامه مستقل عمل خواهد کرد .بنابراین زیر برنامه خودش شامل بخش عنوان خواهد بود 2 حالت زیر بر نامه می توانیم داشته باشیم
PROCEDURE نام زیر برنامه;
Function نام زیر برنامه;
بخش عنوان دیگری می توانیم داشته باشیم unit است .
Unit نام;
عبارت USES
این عبارت units را که مورد استفاده بر نامه است, مشخص می سازد . یونیت ها کتابخانه هایی هستند که کمپایل شده ودر بر نامه ها مورد استفاده قرار می گیرند. با نوشتن نام یونیت ها در جلوی uses , می توان از امکانات موجود در آن استفاده کرد . در این صورت اگر بر نامه شما یک روتین فر عی را خواند که در متن برنامه نباشد آنرا در یونیت یاد شده جستجو خواهد کرد .
بخش تعریف
به کامپایلر می گوید که بر نامه به چه سلول هایی ازحافظه نیاز دارد . بخش تعریف شامل بخش های زیر است:
1. بخش بر چسب
2. بخش ثابت
3. بخش نوع
4. بخش متغییر ها
بخش بر چسب LABEL))
LABEL بخشی از کامپیوتر است که در آن بر چسب هایی وجود دارد که کنترل کامپیوتر به آنها هدایت می شود. متخصصین کامپیوتر سعی بر آن دارند که جهت انشعاب به بر چسب های یاد شده از دستور GOTOاستفاده نکنند .
ثابت Const
در این بخش از بر نامه ثابت های بر نامه معرفی می شوندکه یک مقدارعددی یا یک رشته را به یک شناسه نسبت می دهیم تعریف یک ثابت به صورت کلی زیر است :
Const
نام شناسه =مقدار ثابت ;
بخش نوع(TYPE)
در این بخش شما داده هایی را که خود ساخته اید معرفی می کنید ,داده هایی که نیاز شما را مرتفع سازد. متغییر TYPEرا به صرف نوشتن نمی توان مورد استفاده قرار داد بلکه در بخش VARکه به دنبال آن می آید باید متغییر ها تعریف شوند.
بخش متغییر ها(VAR)
متغیرنامی است برای محلی ازحافظه داده می شودوبرای نگه داری موقت داده بکار می روددراین بخش نام وانواع متغییرهامعرفی می شودشکل کلی استفاده ازمتغیر ها در طرح زیر می باشد :
Var
نوع متغییر : نام متغییر ;
بد نه برنامه (بخش بلاک ):
بخش بلاک block
برای بر نامه ها و زیر بر نامه دستورات داخل کلمات end و begin وارد می شود و این محدوده را بلاک گوییم اگربلاک مربوط به بر نامه اصلی باشد پس از end نقطه می گذاریم و اگربلاک مربوط به زیربرنامه باشدپس از end ;می گذاریم بلاک ها شامل دستورالعمل ها یی مثل تخصیص مقادیر به متغیر ها یا فراخوانی روال ها و یا توابع دیگر بکار می رود .
|
بلاک مربوط به برنامه اصلی |
Begin --------------- --------------- --------------- --------------- --------------- End; |
بلاک مربوط به زیربرنامه |
Begin --------------- --------------- --------------- --------------- --------------- End• |
بخش بدنه برنامه شامل بخش های زیر است:
1. کلمات رزرو شده
2. شناسه ها
3. ثابت ها
4. نماد ها
مفاهیم ابتدایی پاسکال
زبان پاسکال یکی از زبان های بر نامه سازی است که ویژگی آموزشی بسیار بالایی دارد زیرا بسیار منظم و دقیق و خوانااست واین باعث می شود درک کردن بر نامه های این زبان بسیار راحت باشداین زبان به علت ساخت یافتهstructed)) بودن خطاهای احتمالی اندک دارد.یکی از مزایای زبان پاسکال تشابه بر نامه های آن با زبان انگلیسی است .
برنامه نویسی ساخت یافته
روش ساخت یافته در اوایل دهه هزار و 970پایه گذاری شده در روش ساخت یافته یک برنامه به قسمت های کوچکتر و ساده ترتقسیم می شوددرهر قسمت بر نامه نویسی به صورت مستقل انجام می شود ویکی از اهداف برنامه نویسی کاهش استفاده از go to می باشد. که به جای آن یک مجموعه کامل از ساختار های کنترلی برنامه ایجاد می شود .
ورژن یا نسخه :نگارش هر نرم افزار را نشان می دهد .
پاسکال دارای ورژن های مختلفی است .که عبارتند از:
|
پاسکال ورژن های |
95 |
98 |
2000 |
1.3 |
|
توربو پاسکال تحت ویندوز |
ویرژن های 1.5و 7 | |||
|
برلند پاسکال Borland Pascal | ||||
پاسخ سوالات تشریحی
1) نامه پاسکال در همه سیستم عامل ها قابل اجرا است و بر ای نصب نیاز به حداقل حافظه دارد ولی در مورد اجرا (مقدار استفاده از حافظه)بستگی به برنامه دارد .هر چند که پاسکال برنامه تحت DOSاست می تواند در سیستم عامل های دیگری چون WINDOSیا UNIX... نصب واجرا شود.
2) براي ايجاد فايل جديد از منوي File گزينة New را انتخاب مي کنيم. وبرای باز کردن فايل از منوي File گزينه Open را انتخاب مي کنيم.
3) برای save تمام بر نامه های باز در پاسکال از گزینه all….. Save استفاده می کنیم .
4) از ترکیب کلید alt+F3 استفاده می کنیم .
5) برای مشاهده محتوای متغیر ها از کلید ctrl+F7 استفاده می کنیم .
6) معادل گزینه zoom در منوی windowsدر محیط توربوپاسکال است .
7) پنجره watch در محیط پاسکال برای مشاهده محتوای متغیر ها است.
8) کلیدF4 برای مشاهده محتوای متغیر ها در خط خاصی از برنامه میشود و این کار باعث توقف موقت برنامه می شود.
9) کلید F8 برای اجر ای خط به خط بر نامه به نحوی که زیر برنامه به صورت یکجا فراخوانی شود.
10) کلیدF6 برای حرکت در پنجره های پاسکال استفاده می شود.
سوالات تشریحی
1)امکانات مورد نیاز برای نصب و اجرای بر نامه پاسکال را توضیح دهید ؟
2) براي ايجاد فايل جديدو باز کردن فایل ایجاد شده از کدام منو استفاده می کنیم ؟
3) برای save تمام بر نامه های باز در پاسکال از کدام منو و گزینه استفاده می کنیم ؟
4) برای بستن پنجره جاری در توربوپاسکال از ترکیب کدام کلید ها استفاده می کنیم ؟
5) جهت مشاهده محتوای متغیر از کدام کلید ها استفاده می کنیم ؟
6) کلید F5 معادل کدام گزینه در توربوپاسکال است؟
7) پنجره watch در محیط پاسکال برای چیست؟
8) کلید F4 در محیط پاسکال چه کاری را انجام می دهد ؟
9) کاربرد کلید F8 در محیط پاسکال را بنویسید ؟
10)کلید F6 در محیط پاسکال چه کاری را انجام می دهد ؟
۱۰ الی ۱۵دقیقه زمان برای دانلود نیاز دارید.
آموزش نصب پاسکال
امکانات مورد نیاز برای نصب و استفاده از برنامه پاسکال
در همه سیستم عامل ها قابل اجرا است
بر ای نصب نیاز به حداقل حافظه دارد
ولی در مورد اجرا (مقدار استفاده از حافظه)بستگی به برنامه دارد .
نکته :
هر چند که پاسکال برنامه تحت DOSاست
می تواند در سیستم عامل های دیگری چون WINDOSیا UNIX... نصب واجرا شود
آموزش نصب برنامه پاسکال:
دو روش برای تهیه برنامه پاسکال وجود دارد:
1)اول اینکه این برنامه را ازطریق شبکه اینترنتی www.freepascal.org داونلود کنیم
پس از کلیک روی گزینه download در صفحه ایی که ظاهر می شود محیطی که می خواهیم برنامه را در آنجا نصب کنیم انتخاب می کنیم
مثلا ( dos یا windows98 و...) سپس مراحل نصب طی می شود و
برنامه قابل اجراست .
2)راه دوم این است که برنامه را از هرگونه حافظه جانبی که برنامه پاسکال را دارا می باشد( که رایج ترین آنها Cd است ) نصب کنیم به شرح زیر :
ابتدا به my computer رفته درایو مربوط به Cd را انتخاب کرده وپوشه turbo Pascal یا TP را انتخاب می کنیم اگر در محیط DOS بخواهیم عمل نصب را انجام دهیم پس از وارد شدن به پوشه مذکور آیکون install را بر می گزینیم و اگر در محیط windows بخواهیم این برنامه را نصب کنیم بهتر است ابتدا پوشه مورد نظر را در هارد کامپیوترمان ذخیره کنیم سپس از طریق آیکون install مراحل نصب را طی کنیم .
نحوه اجرای برنامه پاسکال
نحوه اجرا در محیط DOS
ابتدا سیستم اعلان روبرو را نمایش می دهد <C:\
این اعلان نشان می دهد که کامپیوتر آماده است تا چیزی را تایپ کنیدو آنرا انجام دهد .
برا ی ورود به شاخه ای ابتدا ازدستورCDکه مخفف(CHANGE DIRECTORY) است استفاده می کنیم.
حال به زیر دایرکتوری بروید کهه حاوی بر نامه پاسکال است حال به عنوان مثال پاسکال در درایو Cو زیر دایرکتوری BP\BIN است
C\> CD\BP\BIN
C\ CD\BP\BIN>TP
آنگاه بر نامه پاسکال اجرا می شود.
نحوه اجرا در محیط WINOWS
براي اجراي پاسکال وارد My Computer مي شويم سپس وارد درايو محتوي فايل ها مي شويم پوشه ای به نام TP ظاهر مي شود وارد پوشه مي شويم ، اين پوشه حاوي 3 پوشه دیگر به نام های :
BIN، UNIT، BGI است. وارد BIN مي شويم و فايل Turbo.exe را اجرا مي کنيم.
در ويندوز 98، ويندوز اجازه نمي دهد که فايل Turbo.exe (فايل اجرايي پاسکال) اجرا شود، به اين دليل بايد از فايل Tpx.exe استفاده کنيم. براي اين کار مراحل بالا را طي کرده منتها بجاي اجراي فايل Turbo.exe، فايل Tpx.exe را اجرا مي کنیم.
جهت باز کردن منوها یا توسط ماوس یا از طریق پایین نگه داشتن کلید Altو اولین نام هر گزینه(که توسط رنگ قرمز مشخص شده اند ) می توان عمل مورد نظر را انتخاب کرد.
براي ایجاد فایل جدید از منو ی File گزینه New را انتخاب مي کنيم.
برای باز کردن فايل از منوي File گزينه Open را انتخاب مي کنيم، (ميانبر F3)
برای save کرد ن از گزینه save استفاده می کنیم . (ميانبر F2)
برای save مجد بر نامه در مکان دیگر از گزینه save as…. استفاده می کنیم .
برای save تمام بر نامه های باز در پاسکال از گزینه all….. Save استفاده می کنیم.
برای print کردن برنامه از گزینه print استفاده می کنیم.
برای خروج از برنامه پاسکال ازگزینه exit استفاده می کنیم. (ميانبرAlt+ x )
برای باز کردن فايل از منوي File گزينه Open را انتخاب مي کنيم، (ميانبر F3)و پنجره زیر باز می شود برای مشخص کردن نام فایل را همرا با مسیر فایل در قسمت name تایپ می کنیم و یا می توانیم از لیستی که اسامی فایل ها در آن قرار دارد ودر پایین پنجره واقع شده نام فایل را انتخاب کرد واگر ماوس نباشد می توان ارز دکمه tab برای دستیابی به لیست فایل ها استفاده کرد .و سپس برای انتخاب فایل مربوط ازکلیدهای فلش دار بالا وپایین استفاده کنید.
برای ذخيره سازي فايل از منوي File گزينة Save را انتخاب مي کنيم. ( ميانبر F2)و پنجره زیر نمایان می شود .که مانند پنجره open است.
برای ایجاد تغییرات در برنامه می توانیم از منوی edit استفاد ه کنیم . که گزینه های منو عبارتند از:
: Undo برگشت به حالت قبلی
Redo : برگشت به حالت بعدی
Cut : بریدن از قسمتی یا کل بر نامه
Copy : کپی کردن قسمتی یا کل بر نامه
Paste : چسباندن ،افزودن
Clear : پاک کردن قسمتی یا کل بر نامه
Show clipboard : وقتی قسمتی راکپی یا cut می کنیم در این قسمت نشان داده می شود.
بر ا ی کامپایل کردن compile برنامه از منوی compileگزینه compile میانبر (alt+f9) استفاده می کنیم و اگربر نامه درست باشد پنجره زیر نمایش داده می شود .
اگر بر نامه درست نباشد error می دهد.
برای اجرای برنامه از منوی Run گزینه Run میانبر (ctrl+f9) استفاده می کنیم.
پاسخ سوالات تشریحی
1)الگو ریتم لیستی از دستور عمل ها ست که مراحل مختلف کار را به زبان دقیق و با جزئیات کافی بیان می کند ودر آن تر تیب مراحل و خاتمه پذیر بودن عملیات باید کاملا مشخص باشد .
2)الگوریتم ها مراحل زیر را دارند :
v خواندن داده ها
v انجام محاسبات
v چاپ نتایج
و هر یک از قسمت ها با بررسی دقیق ممکن است به بخشهای کوچکتری تقسیم شود
3)سه روش بیان الگوریتم عبارتند از:1- بیان الگوریتم با جملات فارسی 2- بیان ریاضی الگوریتم 3- بیان الگوریتم توسط شکل ها مانند (فلوچارت ٬نمودارNS)
4) (aطولانی بودن الگو ریتم است .(bاز دستور های الگوریتم تفسیر های گوناگونی می شود .
5)متغییر نامی است که به کمیتی داده می شودو مقدار آن ممکن است در طول اجرای الگوریتم تغییر کند . محلهای ذخیره ورودی ها و خروجی های الگوریتم هستند
6)وقتی الگوریتم طولانی باشد و یا پیچیدگی الگوریتم بیشتر شود مراحل الگوریتم دشوار می شود.
7) در بیان الگوریتم توسط تعدادی شکل خاص استفاده می شود .که فلوچارت یا نمودار گردش کار می گویند
9) حل مسئله با متغییر کمکی T یک متغییر کمکی است .
1)wوY را بخوان
2)W ç T
3) Y ç W
4)T ç Y
5) پایان
حل مسئله بدون متغییر کمکی
1)Wو Yرا بخوان
۲)
3)Y- W ------> Y
|
|
5) Yو W را چاپ کن
6)پایان
10)
|
متغییر ها عدد اولx عدد دوم y مقداربزرگترmax
|
X (1و y را بخوان
2) اگرx>y آنگاه xرا max وگرنه y را max قرار می دهیم max
Max (3 را چاپ کن
(4پایان
11)
X (1 رابخوان
(2اگر x>0 آنگاه 3*x- 5 در متغییرy قرار می دهیم
(3وگرنه ٬ اگرx=0 آنگاه 2 را در متغییرy قرار می دهیم
(4وگرنه 2*x+1 را در متغییرy قرار می دهیم
X (5و y را چاپ کن
(6پایان
12)در سری نوشته شده یک در میان منفی است پس ابتدا متغییری مثل Si را در نظر میگیریم تا علامت عدد را تعیین کند ابتدا مقدار آن را یک تعیین می کنیم (چون اولین علامت + است) و پس از هر مرحله علامت آن را تغیر می دهیم (از 1به1- و از 1- به 1)
S را 0 قرار میدهیم
si را 1 قرار میدهیم
i را 1قرار میدهیم
|
متغیر ها علامت Si تعداد جمله N شمارنده i مجموع سری S |
N را بخوان
تا زمانی که <=N i دستورات 6 تا 8 ر ا اجرا کن
S*Si+1در S قرار دهید
–Si = Si
1+i را در iقرار دهید
پایان حلقه
پایان
سوالات تشریحی
1. الگو ریتم چیست؟
2. مراحل طراحی الگوریتم را نام ببرید ؟
3. انواع روشهای بیان الگوریتم را نام ببرید ؟
4. اشکالات بیان الگوریتم با جملات فارسی را بنویسید؟
5. متغییر چیست ؟
اشکالات بیان الگوریتم به زبان ریاضی را بنویسید؟
6. فلوچارت چیست؟
7. الگوریتمی که دومقدار را از ورودی خوانده ٬در دو متغییر W٬Z قرار می دهد و سپس محتویات آن دو را با هم عوض کرده ٬در خروجی چا پ می کند؟(یکبار باکمک متغیر مککی و بار دیگر بدون متغییر کمکی حل کنید )
8. الگوریتمی بنویسید که دو مقدار را از ورودی خوانده٬ مقدار بزرگتر را در خروجی چاپ کند ؟
9. الگوریتمی بنویسیدکه مجموع Nجمله ازسری زیررامحاسبه کند ؟ (فلوچارت هم رسم کنید) S= 1 – 2 + 3 - 4 + 5 – 6 +….+N
الگو ریتم : لیستی از دستورعمل هاست که مراحل مختلف کار را به زبان دقیق و با جزئیات کافی بیان می کند ودر آن تر تیب مراحل و خاتمه پذیر بودن عملیات باید کاملا مشخص باشد .
طراحی الگوریتم برای مسئله
الگوریتم ها مراحل زیر را دارند :
1- خواندن داده ها
2- انجام محاسبات
3- چاپ نتایج
چگونگی حل مسئله
شناخت مسئله
طرح نقشه حل مسئله
تحلیل راه حل مسئله
روشهای بیان الگوریتم
3روش بیان الگوریتم عبارتند از :
بیان الگوریتم با جملات فارسی
بیان ریاضی الگوریتم
بیان الگوریتم توسط شکل ها مانند (فلوچارت ٬نمودارNS)
اشکال عمده بیان الگوریتم با جملات فارسی:
طولانی بودن الگوریتم است .
از دستور های الگوریتم تفسیر های گوناگونی می شود .
اشکالات عمده بیان ریاضی الگوریتم :
وقتی الگوریتم طولانی باشد و یا پیچیدگی الگوریتم بیشتر شود مراحل الگوریتم دشوار می شود.
بیان الگوریتم توسط شکل ها:
به روش ها ی متفاوت امکان پذیر است. یکی از این روشها فلوچارت (flowchart) نام دارد که به آن نمودار گردش نیز می گویند وروش دیگر بیان الگوریتم توسط شکلها ٬ نمودار NSاست .
نکته :در بیان الگوریتم توسط فلوچارت ٬از تعدادی شکل خاص استفاده می شود .
جنبه های مختلف یک کامپیوتر
کامپیوتر از دوبخش اصلی تشکیل شده است :
- سخت افزار (HARDWARE):
به اجزای قابل لمس کامپیوتر گفته می شود . این اجزا به هم مرتبط می باشند به طوری که هریک دچار مشکلی شود در دیگری هم تاثیرخواهد داشت . در کل سخت افزارکلیه دستگاههای الکتریکی٬الکترونیکی٬مکانیکی ٬سیستم های رابط و وسایل جانبی کامپیوتررا سخت افزاری گویند.مثل :واحد پردازش (CPU)٬صفحه نمایش ٬صفحه کلید ٬چاپگر٬... می باشد .
- نرم افزار (SOFTWARE) :
مکمل سخت افزار می باشد وسخت افزار بدون نرم افزار و بلعکس هیچ کاری نمی توانند انجام دهند به عبارت دیگر نرم افزار را روح و جان کامپیوتر می گویند که به کامپیوتر داده می شود .در کل مجموعه ای از یک یا چند برنامه که برای انجام کار خاصی نوشته شده باشند را نرم افزار می نامند .
انواع نرم افزار ها
نرم افزار ها به دو دسته تقسیم می شوند :
1) نرم افزار های کار بردی) APPLICATION):
برنامه ها یی هستندکه یا خود کاربر آنهارا می نویسند ویا شرکت های نرم افزاری آنها را تهیه کرده و به صورت آماده ارایه می کنند مثل واژه پرداز ها
2) نرم افزار های سیستم (SYSTEM):
نرم افزار هایی هستند که کامپیوتر برای فعال شدن و سرویس دهی به آنها نیاز داردکه برای بهره برداری سخت افزار وسایر نرم افزار ها به کار گرفته می شوند
مهم ترین این نرم افزار ها عبارتند از :
الف)سیستم عامل OS(OPERATING SYSTEM)
سیستم عامل یکی از مهم ترین برنامه های سیستم است که مدیریت کامپیوتر ودستگاههای جانبی را بر عهده دارد این بر نامه را رابط بین سخت افزار و انسان می نامند اگر سیستم عامل نباشد کاربران باید با جزییات کار کامپیوتروتشکیلات سخت افزاری آن آشنایی کامل داشته تا بتوانند با آن کار کنند
در حالت کلی سیستم عامل به دوگروه تقسیم می شوند :
1) سیستم عامل های تک منظوره :
این نوع سیسستم عامل ها در کامپیوتر های شخصی به کار می روند به طوریکه در آن واحد یک کاربر می تواند از آن استفاده کند مثل سیستم عامل DOS معروفترین سیستم عاملی است که در ریز کامیوتر ها به کار گرفته می شود و مخفف کلمات (DISK OPERTING SYSTEM)به معنی سیستم عاملی که بر روی دیسک وجود دارد٬ است .
2) سیستم عامل های چند کاربره چند منظوره:
این نوع سیستم عامل ها حالت شبکه دارند به طوریکه در آن واحد چند ین کار بر می توانند از آن استفاده کنند .WINDOWS95به بالا ٬UNIX٬…
ب) UTILITIESبر نامه های سودمند :
NS٬NC2000٬DN برنامه هارا راحتر اجرا می کند .
ج)مترجم ها
زبانی که کامپیوتر آن را درک می کند زبان ماشین نام دارد بنابراین برنامه هایی که به زبان ماشین نوشته می شوند برای کا مپیوتر قا بل فهم بوده و اجرا می شوند اما بر نا مه هایی که به زبا نهای غیر از زبان ماشین مثل پاسکال و Cنوشته می شوندتوسط ماشین قا بل فهم نیستند .لذا باید وسیله ای بنام مترجم و جودداشته باشد تا بر نامه های نوشته شده به یک زبان برنامه نویسی را به یک برنامه در زبان ماشین تبدیل کند این وسیله خودش یک بر نامه است ٬مترجم گویند هر زبان بر نامه سازی مترجم خاص خودش را دارد
انواع مترجم ها
متر جم ها دو دسته هستند :
مفسر (interprete):
برنامه ها را سطر به سطر می خواند وترجمه می کند واجرا می کند.بنابر این فایل مقصد نخواهیم داشت .سرعت اجرا ءکم می باشد و برای اجرای مجدد برنامه باید مجدا بر نامه تر جمه شود .مفسر ها نیز بر نامه های سیستم می باشند که عمل تبدیل از زبان سطح بالا به زبان سطح پایین را انجام می دهد
2) کامپایلر compiler
نرم افزاری است سیستمی که بر نامه ای نوشته شده با زبان سطح بالا را به بر نامه ای در سطح زبان ماشین تبدیل می کند به طوریکه دستورالعمل در حین اجرا به چندین دستورالعمل در زبان ماشین تبدیل می شوند در واقع کامپایلربر نامه مبدا را به عنوان ورودی گرفته و به صورت تبدیل شده به زبان ماشین با عنوان بر نامه مقصد تحویل می دهد .کامپایلر یکبارو یکجا برنامه را ترجمه می کندبه جز زمانی که در بر نامه مبدا تغییراتی داده باشیم .
پدرش به خاطر تحصیل او، از کار خود استعفا کرد و خانواده را به پاریس آورد (1639) در بیست و پنج سالگی فعالیت های علمی خود را رها کرد و به دیر «ژان سنیست ها» رفت چرا که «ژان سن» معتقد بود «دانش یک شهود روانی است شبیه اشتهای جسمی» و این همان پاسکال است که زمانی به شوهر خواهرش نوشته بود :«... گمان نمی کنم ناچار باشیم اندیشه ها و حکم هایی را که از گذشته به ما رسیده است، بپذیریم، مگر آنکه استدلالی منطقی و بی تردید داشته باشند و به نظر من نهایت ضعف و نادانی است که به حقیقت های روشن ومسلم گردن ننهیم و به اندیشه های کهنة خود باور داشته باشیم.»
پاسکال در 12 سالگی بسیاری از قضیه های هندسه اقلیدسی را پیش خود اثبات کرد. در 16 سالگی قضیه ای از هندسه تصویری را کشف کرد (قضیه پاسکال)، در همان سال کتاب «مقاطع مخروطی» را نوشت. در سال 1640 نخستین ماشین حساب را ساخت، نظریه احتمال را بنیان گذاشت. به جز آن کشف هایی در «تعادل آب گون ها» ، «فشار هوا» و غیر آن دارد. او کارهای مهمی در هیدروستاتیک (که به همین سبب واحد فشار، پاسکال نامیده میشود) انجام داد و بحثهایش با فرما در مورد مساله دومره نظریه احتمال را بنا نهاد.
مثلث پاسکال یا نمودار ضریب دو جمله ای، از آن او نبوداما وی آن را در محاسبه های احتمالش به کار برد. پاسکال در کار مربوط به یافتن مساحتهای اشکال منحنی الخط نیز شرکت داشت،کاری که منجر به حساب دیفرانسیل و انتگرال شد.
در کلیسا وقتی در 1668 به درد دندان مبتلا شد، برای نجات از درد به ریاضیات پناه برد و در 8 روز کتابی درباره انتگرال ها و دیگر کشف های خودش نوشت (در سال 1659 رساله ای درباره محاسبات دیفرانسیلی نوشته بود).اوسرانجام در سال 1662 در گذشت.
منبع سایتdaneshnameh.roshd.ir