دستورات کنترلی 2 تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86 1 مروری بر مطالب ساختارهای کنترل عبارتند از : قطعه ای انتخاب عبارات منطقی دستور ifو case تکرار While For repeat 2 while دستور While boolean_exp do St; While boolesn_exp do begin St; St; end; 3 دستور ( whileادامه) شرط تکرار حلقه قبل از ورود به حلقه شرط تکرار بررسی می شود و در صورت صحیح بودن وارد حلقه می شود. تا زمانی که شرط حلقه برقرار است ،حلقه اجرا می شود تغییر شرط الزم است در بدنه شرط ،شرط حلقه تغییر کند تا حلقه بینهایت نشود. While B do ;St B = True No 4 Yes دستور ( whileادامه) متغیر کنترل حلقه مقداردهی اولیه مقدار شرط تکرار برای اولین دارای مقدار بامعنایی است. آزمایش بهنگام سازی اطمینان می دهد در هر بار اجرای حلقه برنامه به سوی هدف معین گام بر می دارد. 5 n! محاسبه: مثال Var n,m,factorial : Integer; Begin readln(n); m:=n; if (n>=0) then begin factorial := 1; while (n>0) do begin factorial := factorial * n; n:= n-1; end; writeln(‘factorial ‘,m,’ is ’ ,factorial); end else writeln(‘Error!’); End. 6 برنامه زیر را ردیابی کنید: مثال Var HasDigit : Boolean; n,counter : Integer; begin readln(n); HasDigit := true; counter:= 0; while (HasDigit) do begin n := n div 10; HasDigit := n <> 0; inc(counter); end; writeln (counter); End. 7 نوع حلقه ها تکرار حلقه به روش های مختلفی کنترل می شود شمارشی پرچم های منطقی 8 ) تو در توwhile( جدول ضرب: مثال i:=1; While i<=10 do begin j:=1; while j<=10 do begin write(i*j:4); j := j+1; end; i:= i+1; writeln; end; 9 for دستور For variable:=Initial_value to final_value do St; For variable:=Initial_value downto final_value do St; 10 ) ( ادامهfor دستور var := initial Inc(var) Yes St var <= final No For i:=1 to 10 do St; 11 دستور ( forادامه) اجزای حلقه متغیر حلقه مقدار اولیه و نهایی بعد از اجرای بدنه حلقه ،مقدار آن افزایش (یا کاهش) می یابد. مقدار نهایی فقط یک بار و قبل از ورود به حلقه تعیین می شود. تغییر آن در بدنه حلقه بر تعداد تکرار حلقه تاثیری ندارد. حلقه به تعداد باری که مقدار متغیر بین مقدار اولیه و نهایی قرار دارد اجرا می شود 12 )مثال (بررسی نحوه اجرا var i,j: integer; begin j:= 4; for i:=1 to j do begin { i:= i+1;} writeln('i: ',i,'j: ', j); j := j*i; end; readln; end. 13 while بهfor تبدیل دستور i:= j+1; n := k*8+l; While (i<n) do begin i:= k div j ; j:= j – 1; k:= k*2; i:= i+1; end For i:=j+1 to k*8+l do begin i:= k div j ; j:= j – 1; k:= k*2; end 14 چاپ مثلث اعداد: مثال var n,i,j : integer; begin readln (n); for i:= 1 to n do begin write(1:(n-i+1)); for j:=2 to i do write(j); for j:=i downto 1 do write(j); writeln; برنامه را طوری تغییر دهید که برای درست عمل10 اعداد بزرگتر از .کند end; readln; end. 15 شمارنده های نوع Char در کنار نوع ، integerمی توان از نوع charاستفاده کرد: for NextCh := ‘A’ to ‘Z’ do )write(NextCh 16 Repeat دستور Repeat St; Until boolean_expr Repeat St; St; Until boolean_expr 17 دستور Repeat حلقه تا برقرار شدن شرط تکرار اجرا می شود. شرط تکرار مانند دستور whileاست. پس از اجرای بدنه حلقه ،شرط تکرار بررسی می شود. حلقه حداقل یکبار اجرا می شود. Repeat ;St ;Until B B = false No 18 Yes while به دستورrepeat تبدیل دستور )! داردh باشد آنگاه تبدیل به صورت زیر است (تبدیل بستگی به مقدارh=0 اگر Repeat i := i*k /h; k := k+h ; h:= h-1 ; Until h=0; h=0 h := 10; iWhile := i*k(h<>0) /h; do k := begin k+h ; h:= ih-1 := i*k ; /h; While k := (h<>0) k+h ; do begin h:= h-1 ; end; i := i*k /h; k := k+h ; h:= h-1 ; end; 19 محاسبه تعداد ارقام: مثال Var HasNoDigit : Boolean; n,counter : Integer; begin readln(n); counter:= 0; repeat n := n div 10; HasNoDigit := (n = 0); inc(counter); until HasNoDigit; writeln (counter); End. 20 پرسیدن یک کاراکتر برای ادامه برنامه: مثال Var c : Char; Begin Repeat Writeln ( ‘ Your program is running! ’ ); Repeat Readln (c); Until (c = ‘Y’) or (c = ‘N’) ; Until c = ‘N’ ; Writeln ( ‘ Your program is finished! ’ ); End. 21 میانگین تعدادی نامعلوم از اعداد: مثال Var n : Integer; a , Sum : Real; Begin Sum := 0; Repeat Readln (a); If a <> 0 Then Begin Sum := Sum + a; n := n + 1; End; Until a = 0; Writeln (Sum / n); End. 22 دستورهای کنترل حلقه : Breakاجرای حلقه را متوقف می کند و کنترل برنامه به دستور بعد از ساختار حلقه می رود. : Continueبه مرحله بعدی حلقه می رود. : Haltاز برنامه خارج می شود. 23 ردیابی کنید: مثال var i,j : Integer; begin j:= 4; for i:=1 to 4 do begin writeln('i:',i,'j:':3,j); if (i=3) then continue; i:=i+1 ; j:=j*2; end; readln; end. 24 اشکال زدایی خطای یک بار بیشتر یا کمتر اجرا شدن بررسی محدوده های حلقه استفاده از debuggerدر محیط پاسکال 25 تمرین 1 برنامه ای بنویسید که عدد مفروضی کاربر را حدس می زند. عدد مفروضی کاربر بین 0تا 9999است .در ابتدا برنامه از کاربر می خواهد عددی را در نظر بگیرد ،سپس با سواالت مناسب عدد را بدست می آورد .سواالت می تواند به صورت «آیا عدد شما بین 100تا 400است؟» .با توجه به پاسخ کاربر ،برنامه سوال مناسب تری می پرسد .الزم است برنامه در تعداد سواالت بهینه باشد. 26
© Copyright 2024 Paperzz