اگر نوع های داده ای را یکی از بنیانهای برنامهنویسی پاسکال بدانیم, بنیان دیگر آن بیتردید دستورالعملها هستند. دستورالعملها, در هر زبان برنامه نویسی, مجموعهای از کلیدواژهها و عناصر دیگر هستند که با استفاده از آنها یک رشته اعمال را برای اجرا معین میکنید. به طوری که در فصل بعد خواهیم دید, دستورالعملها معمولاً در قالب پردازهها یا توابع گنجانده میشوند. اینک صرفاً به بررسی انواع عمدهی فرمانهایی میپردازیم که میتوانید برای ایجاد یک برنامه از آنها استفاده کنید.
دستورالعمل های ساده و مرکب
دستورالعمل پاسکال ساده دستورالعملی است که حاوی دستورالعملهای دیگری نباشد. نمونهی دستورالعملهای ساده, دستورالعملهای اختصاص مقدار (assignment) و فراخوانی پردازهها هستند. دستورالعملهای ساده با ویرگول نقطه از هم جدا میشوند:
X := Y + Z; // assignment
Randomize; // procedure call
معمولاً دستورالعملها بخشی از یک دستورالعمل مرکباند که با کلمات begin و end مشخص میشود. یک دستورالعمل مرکب میتواند به جای یک دستورالعمل عمومی پاسکال واقع شود. نمونهی آن را در زیر میبینید:
begin
A := B;
C := A * 2;
end;
ویرگول نقطهی بعد از آخرین دستورالعمل قبل از end الزامی نیست, مانند مثال زیر:
begin
A := B;
C := A * 2
end;
هر دو نسخه درست است. نسخهی اول حاوی یک ویرگول نقطهی غیرضروری (ولی بیضرر) است. این ویرگول نقطه در حقیقت یک دستورالعمل خالی است؛ یعنی دستورالعملی بدون کد. دقت کنید که گاهی در درون حلقهها و یا موارد خاص دیگر میتوان از دستورالعملهای خالی استفاده کرد.
توجه: گرچه این ویرگول نقطههای نهایی مورد نیاز نیستند, ولی من معمولاً آنها را مینویسم,و به شما هم پیشنهاد میکنم که همین کار را بکنید. گاهی ممکن است بعداً بخواهید یک یا چند دستورالعمل به آن اضافه کنید. اگر ویرگول نقطهی نهایی را نگذاشته باشید, باید یادتان باشد که آن را اضافه کنید, بنا بر این، چه بهتر که از ابتدا آن را بنویسید.
دستورالعملهای اختصاص مقدار
برای اختصاص مقدار در پاسکال از عملگر دونقطه مساوی استفاده میشود, که برای برنامهنویسانی که به زبانهای دیگر برنامه مینویسند, نماد عجیبی به نظر میرسد. عملگر = که در برخی زبانهای دیگر برای اختصاص مقدار مورد استفاده قرار میگیرد, در پاسکال برای آزمایش برابری به کار میرود.
توجه: تدوینگر پاسکال (مانند تدوینگر C), با بکارگیری نمادهای متفاوت برای اختصاص مقدار و آزمایش برابری, میتواند متن برنامه را سریعتر تدوین کند, زیرا مجبور نیست که برای درک معنای عملگر قرینهی آن را بررسی کند. در ضمن, کاربرد عملگرهای متفاوت سبب میشود که فهم برنامه برای افراد دیگر راحتتر باشد.
دستورالعمل های شرطی
دستورالعمل شرطی بر اساس شرطی که در خود دارد, یکی از دو دستورالعمل خود را اجرا میکند. دستورالعملهای شرطی دو نوع عمده دارند: دستورالعملهای if و دستورالعملهای case.
دستورالعملهای if
از دستورالعمل if میتوان برای اجرای یک دستورالعمل در صورت درست بودن یک شرط خاص (if-then) و یا برای انتخاب بین دو حالت متفاوت (if-then-else) استفاده کرد. شرط مورد نظر با یک عبارت بولی بیان میشود. نحوهی نوشتن جملههای شرطی را با یک مثال سادهی دلفی نشان میدهیم. اول یک برنامهی کاربردی (application) جدید درست کنید و دو چکباکس (check box) و چهار دکمه (button) روی فرم قرار دهید. نام دکمههای یا چکباکسها را تغییر ندهید, بلکه روی هر دکمه دو کلیک کنید تا پردازندهای برای رویداد OnClick آن ایجاد شود. برای دکمهی اول یک دستورالعمل if ساده وارد کنید:
procedure TForm1.Button1Click(Sender: TObject);
begin
// simple if statement
if CheckBox1.Checked then
ShowMessage ('CheckBox1 is checked')
end;
وقتی روی دکمه کلیک میکنید, اگر چکباکس اول علامت چک داشته باشد, برنامه یک پیغام ساده را نمایش میدهد (رک شکل 5.1). در اینجا را تابع ShowMessage استفاده شده, زیرا سادهترین تابع دلفی است که میتوانید برای نمایش یک پیغام کوتاه به کاربر از آن استفاده کنید.
شکل 5.1: پیغامی که با فشار دادن دکمهی اول, در صورتی که چکباکس اول چک شده باشد, توسط برنامهی IfTest نمایش داده میشود.
اگر چکباکس را فشار دهید و هیچ اتفاقی نیفتد, نشان میدهد که چکباکس چک نشده است. در چنین حالتی شاید بهتر باشد که موضوع را واضحتر کنید, مانند کد مربوط به دکمهی دوم که از دستورالعمل if-then-else استفاده میکند:
procedure TForm1.Button2Click(Sender: TObject);
begin
// if-then-else statement
if CheckBox2.Checked then
ShowMessage ('CheckBox2 is checked')
else
ShowMessage ('CheckBox2 is NOT checked');
end;
توجه کنید که نباید بعد از دستورالعمل اول و قبل از کلیدواژهی else ویرگول نقطه بگذارید, وگرنه تدوینگر خطای دستوری صادر خواهد کرد. در حقیقت, دستورالعمل if-then-else یک دستورالعمل واحد است, از این رو در وسط آن نمیتوانید ویرگول نقطه قرار دهید.
یک دستورالعمل if ممکن است خیلی پیچیده باشد. ممکن است به جای یک شرط یک رشته شرط (با استفاده از عملگرهای بولی and, or, و not) قرار داده شود, و یا یک دستورالعمل if در درون دستورالعمل if دیگری قرار داده شود. دو دکمهی آخر مثال IfTest این دو حالت را نشان میدهند:
procedure TForm1.Button3Click(Sender: TObject);
begin
// statement with a double condition
if CheckBox1.Checked and CheckBox2.Checked then
ShowMessage ('Both check boxes are checked')
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
// compound if statement
if CheckBox1.Checked then
if CheckBox2.Checked then
ShowMessage ('CheckBox1 and 2 are checked')
else
ShowMessage ('Only CheckBox1 is checked')
else