دستور Case در پاسکال

دستور Case در پاسکال
با استفاده از دستور Case قادر به برسی شرط یا شرایط خاصی خواهید بود
در حقیقت عملکرد دستور Case معادل با استفاده از چندین دستور if است
همچنین دستور Case نیز از پرکاربردترین دستورات برنامه نویسی پاسکال است و موجب ایجاد خوانایی در برنامه میگردد
شکل کلی استفاده از دستور Case به صورت زیر است
Case عبارت of دستور:[[,..],مقدار]مقدار; [,....] [else دستور ;] end;
برای مثال در برنامه زیر از دستور Case استفاده شده است
Var A:Integer; begin ReadLn (A); Case A OF 1:WriteLn(1); 2:WriteLn(2); end; end.
برنامه فوق ابتدا عددی را از کاربر دریافت نموده
و سپس دو طرف شرط مختلف را در مورد عدد مربوطه مورد برسی قرار میدهد
اگر عدد وارد شده 1 باشد عدد 1 نمایش داده خواهد شد
و اگر عدد وارد شده برابر 2 باشد عدد 2 نمایش داده خواهد شد
برنامه فوق را می توان با استفاده از دستور if به صورت زیر نوشت
Var A:Integer; begin ReadLn(A); if A=1 the WriteLn (1); if A=2 the WriteLn (2); end.
همان طور که مشاهده میکنید استفاده از دستور Case باعث خوانایی بیشتر برنامه میگردد
با توجه به اینکه در صورت برقراری هر یک ارشروط دستور Case میتوانید یک دستور را اجرا کنید
بنابراین استفاده از دستور مرکب نیز امکان پذیر است
برای مثال به برنامه زیر توجه کنید
Var A:Integer; begin ReadLn(A); case A of 1 : begin WriteLn; WriteLn(1); end; 2 : WriteLn(2); end; end.
همچنین میتوانید چندین شرط را در یک مرحله مورد برسی قرار دهید
برای مثال به برنامه زیرتوجه کنید
Var A:Integer; begin ReadLn(A); case A of 1,2,3 : WriteLn ('1 or 2 or 3 ' ); 4 : WriteLn ('4'); 5,6 WriteLn ('5 or 6'); end; end.
در ضمن میتوانید در صورت عدم برقراری شرایط باعث اجرای دستور یا دستورات خاصی شوید
برای مثال به برنامه زیر توجه کنید
Var A:Integer; begin ReadLn(A); case A of 1,2,3 : WriteLn ('Hello' ); 4 : WriteLn ('ok'); 5,6 WriteLn ('Goodby'); end; end.
برنامه فوق عددی را از کاربر دریافت نموده و سپس شرایط مختلفی را مورد برسی قرار میدهد
در صورتی که عدد مورد نظر 1 و 2 و 3 باشد کلمه Hello نمایش داده خواهد شد
اگر عددی مرود نظر 4 و 5 باشد کلمه ok نمایش داده می شود
در صورتی که شرایطی قبلی برقرار نباشد
( یعنی عدد مورد نظر 1 و 2 و 3 و 4 و 5 تباشد )
کلمه Goodby نمایش داده خواهد شد
همچنین در تعیین مقدار می توانید از زیر محدوده ها نیز استفاده کنید
برای مثال به برنامه زیر توجه کنید
Var A:Integer; begin ReadLn(A); case A of 1..100 : WriteLn ('Hello' ); 200..300 : WriteLn ('ok'); else WriteLn ('bad'); end; end.
توجه داشته باشید که اگر از یک مقدار در دو شرط استفاده نمایید
دستور مربوط به اولین شرط مورد اجرا قرار خواهد گرفت ( در صورت بر قراری شرط )
برای مثال به برنامه زیر توجه کنید
Var A:Integer; begin A:=10; case A of 1..10 : WriteLn ('Bad' ); 10..20: WriteLn ('Good'); end; end.
اجرای برنامه فوق باعث نمایش کلمه Bad خواهد شد
به این دلیل که در صورت بر قراری هر یک از شروط پاسکال شروط دیگر را برسی نخواهد کرد