Borna66
06-07-2010, 01:20 PM
هر زبان برنامه نویسی دارای دستوارت شرطی و کنترل روند برنامه میباشد که دلفی نیز این امکان را با دستوارت خاص به شما میدهد …
مثلا شما نیاز دارید در قطعه کدی شرطی قرار دهید تا عدد بزگتر یا کوچکتر از بین ۲ یا چند عدد را انتخاب کند یا مثلا میخواهید برای بارها روندی تکرار شود … برای مواردی این چنین شما نیاز به استفاده از دستوارت شرطی دارید
دستوارت شرطی و تکرار رایج در دلفی عبارت است از:
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’);
عکس ۱:
http://pnu-club.com/imported/2010/06/488.jpg
با فرض اینکه عدد اول در x و عدد دوم را در y ریخته باشیم کد بالا مقایسه بین ۲ عدد میباشد
حالا فرض کنیم میخواهیم عددی از کاربر بگیریم و انرا با ۵ عدد مقایسه کنیم
عدد مربوط را در متغیر برای مثال به اسم x قرار میدهیم
case x of
1: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;
عکس۲:
http://pnu-club.com/imported/2010/06/489.jpg
این گونه مقایسه را میتوانید مثلا برای چک کردن user name و یا password استفاده کنید به این صورت که جای قطعه کد ها که در این مثال showmessage استفاده شده از دستور if استفاده کنید که در مقاله بعدی توضیح داده خواهد شد
مثلا میخواهیم عددی را از کاربر بگیریم و ۱۰ با با خودش جمع کنیم :
عدد را در متغیری به اسم x میریزیم و سپس با حلقه برای ۱۰ بار انرا جمع میکنیم :
For i:=1 to 10 do
Begin
A:=X+a;
End;
عکس۳:
http://pnu-club.com/imported/2010/06/490.jpg
توجه کنید که متغیر a باید مقدار دهی اولیه شود (۰)
مثلا شما نیاز دارید در قطعه کدی شرطی قرار دهید تا عدد بزگتر یا کوچکتر از بین ۲ یا چند عدد را انتخاب کند یا مثلا میخواهید برای بارها روندی تکرار شود … برای مواردی این چنین شما نیاز به استفاده از دستوارت شرطی دارید
دستوارت شرطی و تکرار رایج در دلفی عبارت است از:
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’);
عکس ۱:
http://pnu-club.com/imported/2010/06/488.jpg
با فرض اینکه عدد اول در x و عدد دوم را در y ریخته باشیم کد بالا مقایسه بین ۲ عدد میباشد
حالا فرض کنیم میخواهیم عددی از کاربر بگیریم و انرا با ۵ عدد مقایسه کنیم
عدد مربوط را در متغیر برای مثال به اسم x قرار میدهیم
case x of
1: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;
عکس۲:
http://pnu-club.com/imported/2010/06/489.jpg
این گونه مقایسه را میتوانید مثلا برای چک کردن user name و یا password استفاده کنید به این صورت که جای قطعه کد ها که در این مثال showmessage استفاده شده از دستور if استفاده کنید که در مقاله بعدی توضیح داده خواهد شد
مثلا میخواهیم عددی را از کاربر بگیریم و ۱۰ با با خودش جمع کنیم :
عدد را در متغیری به اسم x میریزیم و سپس با حلقه برای ۱۰ بار انرا جمع میکنیم :
For i:=1 to 10 do
Begin
A:=X+a;
End;
عکس۳:
http://pnu-club.com/imported/2010/06/490.jpg
توجه کنید که متغیر a باید مقدار دهی اولیه شود (۰)