دستوارت شرطی در دلفی

  • ۱۳۸۹/۰۳/۱۶
  • سپهر خيري
  • 2

هر زبان برنامه نویسی دارای دستوارت شرطی و کنترل روند برنامه میباشد که دلفی نیز این امکان را با دستوارت خاص به شما میدهد …

مثلا شما نیاز دارید در قطعه کدی شرطی قرار دهید تا عدد بزگتر یا کوچکتر از بین ۲ یا چند عدد را انتخاب کند یا مثلا میخواهید برای بارها روندی تکرار شود … برای مواردی این چنین شما نیاز به استفاده از دستوارت شرطی دارید

دستوارت شرطی و تکرار رایج در دلفی عبارت است از:

If else ,for,while,repeat,switch,

قالب کلی دستوارت بالا به صورت زیر میباشد

قطعه کد مورد نظر (در صورت درستی شرط اجرا میشود) Then   شرط  if

قطعه کد مورد نظر (در صورت غلط بودن شرط) else

نکته این دستور این است که این دستور در صورت کلی بالا فقط میتواند ۲ حالت را بررسی کند یعنی یا شرط درست است یا غیر از ان است ولی گاهی شما نیاز دارید حالت های مقایسه را گسترش بدهید برای این منظور میتوانید از دستور else if  استفاده کنید به این صورت که به جای کلمه else  در دستور بالا else if  گزاشته میشود و در این صورت میتوانید یک شرط دیگر را نیز اضافه کنید و در نهایت else  را قرار دهید

قطعه کد then   شرط if

قطعه کد then  شرط ۲ else if

قطعه کد( در صورت غلط بودن هر ۲ شرط بالا) else

به این صورت میتوانید تا تعداد بیشتری شرط قرار بدهید . مقایسه را انجام بدهید

نکته در باره دستور if  وجود دارد این است که اگر شما در انتهای قطعه کد خود ; را قرار دهید کامپایلر از شما ایراد میگیرد چون قبل از کلمه else  نباید ;  قرار دهید

عمل مقایسه به صورت بالا وقتی تعداد حالات زیاد میشود روش مناسبی نیست مثلا برای ۱۰ شرط کد نویسی وقت گیر و به هم ریخته ایجاد میشود بنابراین نیاز به دستور دیگری داریم تا در تعداد حالات زیاد از ان استفاده کنیم …

دستور switch  دستوری است که شما با استفاده از ان میتوانید حالات بیشتری را مقایسه کنید ..روند کلی ان به صورت زیر است :

case variant  of

Case 1:code;

Case2:code;

Case3:code

Else:code;

End;

روند بالا متغیری(variant) را با چند عدد یا متغیر یا رشته یا…. مقایسه کرده و در صورت برابر بودن قطعه کد مورد نظر را به اجرا در می اورد و همانطور که در دستور if  گفته شد قبل از else  قرار دادن ;  باعث خطا میشود ..

حلقه for:

گاهی شما نیاز دارید تا دستوری چندین بار اجرا شود  … مثلا عددی را ۱۰ بار با خودش جمع کنید

حالت کلی دستور for  به صورت زیر است :

for i:=1 to 10 do

begin

قطعه کد

End;

دستور بالا ۱۰ بار قطعه کد شما را اجرا میکند .. اول از همه شما نیاز به تعریف متغیری مانند i   دارید که باید از نوع محلی باشد در غیر اینصورت خطا رخ میدهد .. پس از تعریف متغییر میتوانید مقادیر دلخواه را در ان به صورت عددی یا متغیر قرار دهید تا به حد نهایت تعیین شده توسط شما( در این مثال عدد ۱۰ برسد) که میتواند متغیر باشد ..

نکته دیگر در دستور for  این است که شما حتما باید یک begin  و end  برای داخل حلقه for  قرار دهید و قطعه کد را درون ان بنویسید ..

گاهی شما نیاز دارید تا مقادیر به صورت نزولی شمرده بشوند یعنی مثلا از به جای اینکه از عدد ۱ به ۱۰ برود از عدد ۱۰ به ۱ پیمایش کند برای این منظور باید به جای to  از کلمه downto  استفاده شود به صورت زیر

For i:10 downto 1 do

Begin

قطعه کد

End;

دستور while  این امکان را به شما میدهد تا با شرط حلقه را کنترل کنید مثلا تا زمانی که متغیری از متغیر دیگر بزگتر یا کوچکتر است کاری را تکرار کند

روند کلی دستور به صورت زیر است :

While x>y do

Begin

قطعه کد

End;

در این نمونه شرط بزگتر بودن x  از y میباشد ..در واقع تا زمانی که این شرط درست باشد قطعه کد تکرار میشود

دستور repeat  نیز همانند while میباشد و به صورت زی استفاده میشود

قطعه کد repeat

;شرط until

تا زمانی تکرار میشود که شرط درست است!
ذکر چند مثال برای موارد بالا :

میخواهیم ۲  عدد را از کاربر گرفته و عدد بزگتر را پیدا کنیم :

پس از دریافت عدد و مقدار دهی انان که در اموزش های قبلی گفته شده نوبت به مقایسه و نمایش عدد بزگتر میرسد

برای مثال ۲ عدد گرفته شده در ۲ متغیر x,y  هستند :
if x>y then showmessage(‘the number 1 is greater’)

Else if Y>x then showmessage(‘the number 2 is greater’)

Else showmessage(‘num1=num2’);

عکس ۱:

با فرض اینکه عدد اول در x  و عدد دوم را در y ریخته باشیم کد بالا مقایسه بین ۲ عدد میباشد

حالا فرض کنیم میخواهیم عددی از کاربر بگیریم و انرا با ۵ عدد مقایسه کنیم

عدد مربوط را در متغیر برای مثال به اسم x  قرار میدهیم

case x of

۱:showmessage(‘your number is 1’);

۲:showmessage(‘your number is 2’);

۳:showmessage(‘your number is 3’);

۴:showmessage(‘your number is 4’);

۵:showmessage(‘your number is 5’)

Else showmessage(‘not found’);

End;

عکس۲:

این گونه مقایسه را میتوانید مثلا برای چک کردن user name و یا password  استفاده کنید به این صورت که جای قطعه کد ها که در این مثال showmessage  استفاده شده از دستور if استفاده کنید که در مقاله بعدی توضیح داده خواهد شد

مثلا میخواهیم عددی را از کاربر بگیریم و ۱۰ با با خودش جمع کنیم :
عدد را در متغیری به اسم x  میریزیم و سپس با حلقه برای ۱۰ بار انرا جمع میکنیم :

For i:=1 to 10 do

Begin

A:=X+a;

End;

عکس۳:

توجه کنید که متغیر a  باید مقدار دهی اولیه شود (۰)

در مقاله بعدی کاربرد موارد بالا به صورت یک پروژه نشان میدهیم

دیدگاه خود را وارد کنید
تعداد دیدگاه ها : 2 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *