آموزش برنامه نویسی به زبان پاسکال(فصل 4: دستورات شرطی و ...)

فصل چهارم: دستورات شرطی و حلقه های تکرار:

دستورات شرطی
دستورات شرطی در پاسکال دو نوع هستند:

·        دستور if

·        دستور case

 

دستور if:

دستور شرطی if از شش قسمت تشکیل شده است؛

1- کلمه ی if

2- شرط (یا شروط)

3- کلمه ی then

4- دستورات

5- کلمه ی else

6- دستورات
عملکرد این ساختار به این صورت است که ابتدا  شرط (یا شروط) بررسی شده و اگر درست باشد دستورات بعد از then اجرا میشود. در غیر این صورت دستورات بعد از else اجرا می شود.


مثال1:
برنامه ای بنویسید که عددی صحیح را از ورودی دریافت کرده و بررس کند که زوج است یا فرد.

program exam1;

var

Number: integer;

begin

writeln(' Please Enter a Number : ');

readln(Number);

if Number mod 2= 0 then

    write(' even ')

else

    write(' odd ');

end.

نکته» توجه کنید که دستور قبل از else ، ";" ندارد. اگر بعد از else دستورات بصورت بلاک می آمدند، کلمه ی end انتهای بلاک ";" نمی گرفت.

نکته»  میتوانیم قسمتهای 5 و 6 را از دستور if حذف کنیم.

مثال2:
برنامه ای بنویسید که یک عدد از ورودی دریافت کرده و بررسی کند که اگر یک بود در خروجی کلمه ی "Allah"، اگر دو بود کلمه ی "Mohammad"، اگر سه بود کلمه ی "Ali"، اگر چهار بود "Fatemah"، اگر پنج بود "Hasan"، و در غیر این حالات کلمه ی "Hossein" را چاپ کند.

 

program exam2;

var

Number: integer;

begin

writeln(' Please Enter a Number : ');

readln(Number);

if Number = 1 then

    writeln(' Allah ')

else

if Number = 2 then

    writeln(' Mohammad ')

else

if Number = 3 then

    writeln(' Ali ')

else

if Number = 4 then

    writeln(' Fatemah ')

else

if Number = 5 then

    writeln(' Hasan ')

else

    writeln(' Hossein ');

end.

 

مثال دوم، نمونه ای از ساختار دستور شرطی if … else  تو در تو است. نوشتن دستورات به این صورت، خوانایی برنامه را کاهش می دهد. معمولاً در چنین حالاتی از ساختار شرطی دیگری به نام Case استفاده می شود.

دستورcase:


مثال3:

مثال قبلی را با کمک ساختار Case بنویسید؛

program exam3;

var

Number: integer;

begin

writeln(' Please Enter a Number : ');

readln(Number);

Case Number of

1: begin    writeln(' Allah ')  end;

2: begin    writeln(' Mohammad ')  end;

3: begin    writeln(' Ali ')  end;

4: begin    writeln(' Fatemah ')  end;

5: begin    writeln(' Hasan ')  end;

else

    writeln(' Hossein ');

end.

مشاهده می کنید که استفاده از دستور Case به جای ساختار if … else های تو در تو، خوانایی برنامه را چقدر بیشتر کرده است.

نکته» میتوان در هر حالت به جای یک مقدار مقادیر بیشتری را برای بررسی و تطبیق قرار داد.

(مثلاً :۱,2,3)

حلقه for :
بخش ها ی مختلف حلقه ی for و نحوه ی عملکرد آن را در قالب چند مثال تشریح می کنیم؛
مثال4:
برنامه ای بنویسید که حاصل ضرب  اعداد صحیح 1 تا 10 را محاسبه کرده و در خروجی چاپ کند.

program exam4;

var

i, result : integer;

begin

result := 1;

for i := 1 to 100 do

result := result * i;

writeln(' result of multiply = ', result);

end.

متغیر result را در خط سوم از نوع عدد صحیح تعریف کردیم و برای نگهداری نتیجه ی ضرب ها آن را بکار گرفتیم. در خط پنجم به آن مقدار پیشفرض برابر با 1 دادیم.

نکته» در پاسکال اگر متغیری از نوع عدد صحیح تعریف کنید و مقدار پیشفرض به آن ندهید، کامپایلر بطور پیشفرض مقدار صفر برای آن در نظر می گیرد. بنابراین در این برنامه اگر مقدار پیشفرض برای resultدر نظر گرفته نمی شد، همواره عدد صفر در مقدار iضرب می شد و در نتیجه جواب نهایی نیز صفر بود.
حلقه ی for از  شش  قسمت تشکیل شده است؛

1- کلمه ی ذخیره شده ی for

2- مقدار دهی اولیه به شمارنده ی حلقه. (i:=1)

3- کلمه ی ذخیره شده ی to  یا downto

: to برای شمارش صعودی

Downto : برای شمارش نزولی

4- عددی که مقدار نهایی شمارش را مشخص می کند.

5- کلمه ی ذخیره شده ی do

6- دستور یا دستورات حلقه

  • اگر حلقه تک دستوری باشد، دستور را بلافاصله بعد از do می نویسیم.
  • اگر حلقه بیشتر از یک دستور داشته باشد، باید تمام دستورات را در یک بلاک قرار داده و بعداز do بنویسیم. هر بلاک با کلمه ی begin آغاز شده و با کلمه ی end به پایان می رسد. دستورات باید بین این دو کلمه قرار بگیرند.

در مثال بالا بعد از پایان اجرای حلقه، با دستور writeln خروجی در صفحه نمایش چاپ می شود.


مثال  5:

برنامه ای بنویسید که 3 عدد از ورودی دریافت کرده و مجموع آنها را حساب کند.

program exam5;

var

n,i,s : integer;

begin

writeln('Enter 3 Numbers');

for i := 1 to 3 do

begin

     readln(n);

     s:= s + n;

end;

writeln('The Sum of Entered Numbers is : ',s);

end.

در این مثال، در هر بار اجرای دستورات حلقه(خطوط 8و9)، یک عدد از ورودی خوانده می شود و مقدار آن به s اضافه می شود. در اینجا مقدار دهی اولیه به s نیاز نیست زیرا مقدار پیش فرض اعداد در پاسکال همانطور که گفته شد برابر صفر است. توجه داشته باشید که چون تعداد دستورات حلقه بیشتر از یک بود، آنها را در بلاک قرار دادیم.

نکته» توجه داشته باشید که بعد از کلمه ی end خط دهم ; قرار داده شده که نشان دهنده ی به پایان رسیدن دستورات بلاک است. ولی بعد از کلمه ی end خط آخر . آمده که پایان برنامه را نشان می دهد.

 

مثال 6:

برنامه ای بنویسید که عدد صحیح n را از ورودی دریافت کرده و فاکتوریل آن را محاسبه کند.

program exam6;

var

n,i,fact: integer;

begin

fact := 1;

write('enter a value for "n"');

readln(n);

for i := n downto 1 do

fact := fact * i;

writeln('factorial of n is : ',fact);

end.

 

در این مثال، نحوه ی شمارش نزولی در حلقه for نشان داده شده است.

حلقه های for تو در تو:

در این حلقه ها  به ازای هر بار اجرای حلقه اول، حلقه داخلی به طول کامل اجرا میشود و در نتیجه به اندازه ی (شمارنده منهای مقدار اولیه) بار، حلقه داخلی به طول کامل اجرا می شود.
مثال 7 :
با کمک حلقه های تو در تو، برنامه ای بنویسید که خروجی زیر را ایجاد کند؛

1

1 3

1 3 5

1 3 5 7

 

program exam7;

var i,j: integer;

begin

for i:= 1 to 4 do

begin

    for j:= 1 to i do

        write(j*2-1:2);

    writeln;

end;

end.

حلقه  while:

در این نوع حلقه بر خلاف حلق for ، تعداد تکرار مشخص نشده. بنابراین حلقه تا زمانی که شرط حلقه برقرار باشد تکرار می شود.

مثال8:

برنامه ای بنویسید که دو عدد صحیح n و m به طوری که m>n باشد را دریافت کرده و بزرگترین مقسوم علیه مشترک آن ها را محاسبه و چاپ کند.
یادآوری؛
بزرگترین مقسوم علیه مشترک دو عدد به بزرگ‌ ترین عدد طبیعی گفته می‌شود که هر دو عدد را می‌ شمارد.
روش محاسبه بزرگترین مقسوم علیه مشترک دو عدد:
ابتدا عدد بزرگتر  را به عدد کوچکتر تقسیم می کنیم. اگر باقی مانده صفر بود بزرگترین مقسوم علیه مشترک برابر عدد کوچکتر میباشد. در غیر این صورت به طور متوالی مقسوم علیه را بر باقی مانده ی تقسیم مرحله ی قبلی تقسیم میکنیم تا اینکه باقیمانده صفر شود در این صورت مقسوم علیه به دست آمده، بزرگترین مقسوم علیه مشترک دو عدد میباشد.

program exam8;

var

m,n,r,tmp,tn,tm : integer;

st: string;

begin

writeln('Enter m :');

readln(m);

writeln('Enter n:');

readln(n);

if n > m then

begin

    tmp:= m;

    m:= n;

    n:= tmp;

end;

tm:= m;

tn:= n;

r:= m mod n;

while r <> 0 do

begin

    tm:= n;

    tn:= r;

    r:= tm mod tn;

end;

writeln('Bmm  ',m,' and ',n,' = ',tn);

readln(st);

end.

مثال 9:

برنامه ای بنویسید که یک جمله از ورودی دریافت کرده و تعداد تکرار کاراکتر s  را در خروجی چاپ کند.

تذکر» (جمله با '.' به پایان می رسد.)

program exam9;

var

n : integer;

ch : char;

begin

writeln( 'Enter a Sentence: ' );

while ch <> '.' do

begin

    read(ch);

    if (ch = 's') OR (ch = 'S') then

        n:= n + 1;

end;

writeln('repeat of "s" = ', n);

readln(ch);

end.


دستور repeat..until..:
این دستور تقریباً مشابه while است. با دو تفاوت. یکی اینکه در دستور while ابتدا شرط بررسی میشود و اگر برقرار بود حلقه شروع میشود اما در دستور repeat حلقه شروع میشود و پس از یک بار اجرا شرط بررسی میشود.
و دوم اینکه دستور repeat تا زمانی اجرا میشود که شرط خاصی تحقق پیدا کند در حالی که دستور while تازمانی که شرط برقرار باشد اجرا میشود.
نکته» دستور repeat نیازی به ایجاد بلوک برای دستورات چندگانه ندارد. و تمام دستورات بین repeat و until، دستورات حلقه محسوب می شوند.

 

مثال10:
برنامه ای بنویسید که عدد بزرگتر از یک n را از ورودی دریافت کند و مجموع اعداد 1 تا n را محاسبه کرده در خروجی نمایش دهد.

program exam10;

var

n,sum,i: integer;

st: string;

begin

Write('Enter n : ');

readln(n);

i:= 1;

sum:= 0;

repeat

    sum := sum + i;

    i:= i + 1;

until (i >n);

writeln('Sum of  1 to  n  = ',sum);

readln(st);

end.

 

معرفی چند روال:
حال که حلقه های مختلف و شیوه ی بکار گیری آن را آموختید، لازم است برخی روالها که در حلقه ها کاربرد فراوان دارند را به شما معرفی کنیم.( روال ها زیر برنامه هایی هستند که از قبل نوشته شده و در توابع کتابخانه ای پاسکال قرار دارد).
روال exit:
استفاده از این روال در هر بلوک باعث میشود که کنترل بلافاصله به خارج از آن بلوک انتقال یابد. بنابرین اگر در  
روال break :
باعث میشود که اجرای یک حلقه خاتمه یافته و کنترل به دستورالعمل بعدی انتقال یابد.
روال continue:
وقتی این روال در حلقه ظاهر شود کنترل برنامه به اول حلقه انتقال یافته و دستور بعد از روال اجرا نمیشود.

 


مطالب مشابه :


کودکان کند نویس

« اگر کودکتان کُند نویس آنها را با سر انگشت شصت، اشاره و میانه جمع‌آوری کند. * هوا نویسی




چرا کند می‌نویسی؟!

اموزشی - چرا کند می‌نویسی؟! - - اموزشی کودکان کند نویس قلم را با فشار زیاد در دست می‌گیرند




علت های بروز کند نویسی در دانش آموزان

دانش آموز اصفهانی - علت های بروز کند نویسی در دانش آموزان - - دانش آموز اصفهانی




مطالبی در خصوص دیکته و املا نويسي

جا انداختن ممکن است به دلیل کُند نویسی ضعف حافظه شنوایی و ضعف گفتاری معلّم و ضعف حافظه




درمان مشکلات دیکته نویسی

کلاس اوّل ابتدایی - درمان مشکلات دیکته نویسی (مثلا صدای ق را در متن پیدا کند). 10-نارسا نویسی




علت های بروز کند نویسی در دانش آموزان !

آموزگار ابتدایی : اول تا ششم - علت های بروز کند نویسی در دانش آموزان ! - (دوم2دبستان هیأت




نمونه برنامه های حل شده برنامه نویسی ++c برای درس محاسبات عددی

c نمونه مسائل حل شده برنامه نویسی بنویسید که اعداد فرد سه رقمی را از بزرگ به کوچک چاپ کند.




آموزش برنامه نویسی به زبان پاسکال(فصل 4: دستورات شرطی و ...)

برنامه نویسی - آموزش برنامه نویسی به زبان پاسکال(فصل 4: دستورات شرطی و ) - - برنامه نویسی




برچسب :