**** دستورات در دلفی : - در جلسه قبل یک نمونه دستور شرطی را توضیح دادیم ، در این جلسه به دستورات در دلفی می پردازیم . به طور کلی در دلفی سه نوع دستور وجود دارد :
شرطی تکرار کنترل
1- دستورات شرطی : این دستورات با توجه به برقرار بودن و یا عدم برقراری یک شرط منطقی کاری را انجام می دهد . این دستورات شامل : * if then ... else که در جلسه قبل به طور کامل بحث شد . * دستور case of که فرم کلی آن به صورت زیر می باشد :
case عبارت of دستور 1 : مقادیر1 ; دستور 2 : مقادیر2 ; . . . n دستور : n مقادیر ; else دستور end ;
* این دستور عبارت مورد نظر را چک می کند با کدامیک از مقادیر 1 تا n برابری دارد و با توجه به آن دستور مورد نظر را انجام می دهد در غیر اینصورت دستور قسمت else را انجام می دهد . * این دستور در مواقعی که بخواهیم با توجه به مقدار یک عبارت تنها یک عمل انجام شود به کار می رود و بهترین جایگزین برای if های تودرتو می باشد . ** نکات : 1- دستور case می تواند بودن قسمت else نیز باشد که در اینصورت شکل کلی به صورت زیر می باشد :
case عبارت of دستور 1 : مقادیر1 ; دستور 2 : مقادیر2 ; . . . n دستور : n مقادیر ; end ;
2- عبارت ارزیابی شونده باید از نوع مقادیر ترتیبی باشند به عبارت دیگر نمی توان از مقادیر اعشاری ، رشته ها و امثالی نظیر اینها استفاده کرد . مقادیر ترتیبی مورد استفاده می تواند از نوع صحیح و یا از نوع بولین باشد . 3- در صورتی که بخواهیم بیش از یک دستور در هر یک از مقادیر 1 تا n اجرا شوند باید از بلوک begin و ;end استفاده شود .
============================ 2- دستورات تکرار : هرگاه بخواهیم عمل و یا عملیاتی به تکرار در برنامه اجرا شوند از این دستورات استفاده می کنیم . * for do : این دستور به دو صورت به کار می رود -» افزایشی ، کاهشی . افزایشی : فرم کلی آن به صورت زیر می باشد :
for مقدار اولیه =: شمارنده to مقدار نهایی do دستور ;
== این دستور با توجه به مقدار اولیه شمارنده و مقدار نهایی شمارنده دستورات را انجام می دهد . در هر بار اجرای حلقه یک واحد به شمارنده اضافه می شود و سپس برای اجرای بعدی چک می شود که آیا از مقدار نهایی کوچکتر مساوی هست یا خیر . در صورتی که مقدار شمارنده از مقدار نهایی بیشتر شود اجرای حلقه خاتمه پیدا می کند . *** نکات : 1- نوع شمارنده باید از نوع صحیح باشد . 2- مقدار اولیه باسد از مقدار نهایی کوچکتر یا مساوی باشد در غیر اینصورت حلقه تکرار نمی شود . 3- باید توجه داشت که مقدار شمارنده نباید در بدنه حلقه تغییر یابد . 4- در صورتی که مقادیر اولیه و نهایی با یک متغیر مشخص می شود می توان آنها را در بدنه حلقه تغییر داد برای اینکه فقط مقادیرفقط یکبار ارزیابی می شوند . 5- پس از خروج از حلقه مقدار شمارنده همان مقدار نهایی می باشد . 6- در صورتی که بخواهیم بیش از یک دستور اجرا شود از بلوک ;begin ... end استفاده می کنیم .
کاهشی : فرم کلی آن به صورت زیر می باشد :
for مقدار اولیه =: شمارنده downto مقدار نهایی do دستور ;
== این دستور در هر بار اجرا یک واحد از شمارنده کم می کند و سپس ارزیابی می کند که آیا از مقدار نهایی بزرگتر یا مساوی هست یا خیر . نکته : مقدار اولیه شمارنده باید از مقدار نهایی بزرگتر یا مساوی باشد در غیر اینصورت حلقه تکرار نمی شود .
For تودرتو : در این دستور از دو یا چند حلقه for به صورت تودرتو استفاده می شود : مثال :
for i := 1 to 10 do begin for j := 1 to 10 do begin . . end ; . . end ;
*در این مثال از دو حلقه به صورت تودرتو استفاده شده است که نحوه اجرای آن به این صورت می باشد که در هر بار اجرای حلقه بیرونی حلقه داخلی یکبار به طور کامل اجرا می شود . *شمارنده حلقه ها نباید همنام باشند . *توجه داشته باشید که اگر تعداد حلقه ها بیش از 2 باشد حلقه بیرونی تا اجرای کامل اولین حلقه داخلی منتظر می ماند . مثال : فرض کنید حلقه های ما به صورت زیر باشند :
1. for i := 1 to 3 do 2. for j := 1 to 3 do 3. for m := 1 to 3 do دستور ;
== برای اینکه حلقه شماره 1 یکبار اجرا شود باید حلقه شماره 2 یکبار به طور کامل اجرا شود و این در صورتی است که در هر بار اجرای حلقه 2 حلقه 3 یکبار به طور کامل اجرا شود . در اینصورت اجرای دستور به تعداد 3×3×3 می باشد .
حلقه تکرار while : فرم کلی آن به صورت زیر می باشد :
while شرط do begin . . end ;
== در این دستور ابتدا شرط بررسی می شود و در صورت صحّت شرط بدنه حلقه اجرا می شود . نکات : * اجرای حلقه while تا موقعی انجام می شود که شرط حلقه برقرار باشد . * باید توجه داشت که در داخل بدنه حلقه شرط نقض شود در غیر اینصورت حلقه بینهایت اجرا می شود . * از این دستور در مواقعی استفاده می کنیم که تعداد دفعات تکرار دستورات برای ما مشخص نباشد و یا بخواهیم دستورات با توجه به شرطی خاص انجام شوند .
حلقه تکرار repeat : فرم کلی آن به صورت زیر می باشد :
repeat دستورات until شرط ;
== هنگامی که کنترل اجرای برنامه به repeat می رسد دستورات یکبار به طور کامل اجرا می شوند و با رسیدن به until شرط تست می شود و در صورت نادرستی شرط اجرای دستورات تکرار می شود . نکات : * در این دستور ابتدا دستورات یکبار به طور کامل اجرا می شوند و سپس شرط حلقه بررسی می شود . * تکرار حلقه در صورتی است که شرط بعد از until ارزش نادرستی داشته باشد . * در این حلقه برای دستورات بیش از یکی نیاز به بلوک ; begin ... end نمی باشد .
3- دستورات کنترلی : این دستورات برای مواقعی که بخواهیم کنترل اجرای برنامه را به جایی دیگر از برنامه و یا اجرای برنامه را متوقف کنیم مورد استفاده قرار می گیرد . Break : کاربرد این دستور در حلقه هاست در صورتی که بخواهیم به ادامه اجرای دستورات حلقه خاتمه دهیم . Continue : این دستور در حلقه ها موجب می شود که کنترل اجرای برنامه در هر جای حلقه به انتهای حلقه منتقل شود ، به عبارت دیگر از اجرای دستورات بعدی حلقه صرف نظر کرده و کنترل برنامه به تکرار بعد منتقل می شود . exit : این دستور در توابع و یا رویدادها موجب می شود که کنترل برنامه از تابع خارج شود . (موجب خروج از توابع و یا رویدادها می شود)