Download presentation
Presentation is loading. Please wait.
Published byΦιλόθεος Γαλάνη Modified over 6 years ago
1
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
دستورات کنترلی 2 تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
2
مروری بر مطالب ساختارهای کنترل عبارتند از : قطعه ای انتخاب تکرار
عبارات منطقی دستور if و case تکرار While For repeat
3
دستور while While boolean_exp do St; While boolesn_exp do begin end;
4
دستور while (ادامه) شرط تکرار حلقه تغییر شرط
قبل از ورود به حلقه شرط تکرار بررسی می شود و در صورت صحیح بودن وارد حلقه می شود. تا زمانی که شرط حلقه برقرار است، حلقه اجرا می شود تغییر شرط لازم است در بدنه شرط ، شرط حلقه تغییر کند تا حلقه بینهایت نشود. While B do St;
5
دستور while (ادامه) متغیر کنترل حلقه مقداردهی اولیه آزمایش بهنگام سازی
مقدار شرط تکرار برای اولین دارای مقدار بامعنایی است. آزمایش بهنگام سازی اطمینان می دهد در هر بار اجرای حلقه برنامه به سوی هدف معین گام بر می دارد.
6
مثال : محاسبه n! Var n,m,factorial : Integer; Begin readln(n); m:=n;
if (n>=0) then begin factorial := 1; while (n>0) do factorial := factorial * n; n:= n-1; end; writeln(‘factorial ‘,m,’ is ’ ,factorial); end else writeln(‘Error!’); End.
7
مثال : برنامه زیر را ردیابی کنید
Var HasDigit : Boolean; n,counter : Integer; begin readln(n); HasDigit := true; counter:= 0; while (HasDigit) do n := n div 10; HasDigit := n <> 0; inc(counter); end; writeln (counter); End.
8
نوع حلقه ها تکرار حلقه به روش های مختلفی کنترل می شود شمارشی
پرچم های منطقی
9
مثال : جدول ضرب (while تو در تو)
While i<=10 do begin j:=1; while j<=10 do write(i*j:4); j := j+1; end; i:= i+1; writeln;
10
دستور for For variable:=Initial_value to final_value do St;
For variable:=Initial_value downto final_value do
11
دستور for ( ادامه) For i:=1 to 10 do St;
12
دستور for ( ادامه) اجزای حلقه
متغیر حلقه بعد از اجرای بدنه حلقه، مقدار آن افزایش (یا کاهش) می یابد. مقدار اولیه و نهایی مقدار نهایی فقط یک بار و قبل از ورود به حلقه تعیین می شود. تغییر آن در بدنه حلقه بر تعداد تکرار حلقه تاثیری ندارد. حلقه به تعداد باری که مقدار متغیر بین مقدار اولیه و نهایی قرار دارد اجرا می شود
13
مثال (بررسی نحوه اجرا) var i,j: integer; begin j:= 4; for i:=1 to j do
{ i:= i+1;} writeln('i: ',i,'j: ', j); j := j*i; end; readln; end.
14
تبدیل دستور for به while
For i:=j+1 to k*8+l do begin i:= k div j ; j:= j – 1; k:= k*2; end 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
15
مثال : چاپ مثلث اعداد var n,i,j : integer; begin readln (n); for i:= 1 to n do write(1:(n-i+1)); for j:=2 to i do write(j); for j:=i downto 1 do writeln; end; readln; end. برنامه را طوری تغییر دهید که برای اعداد بزرگتر از 10 درست عمل کند.
16
شمارنده های نوع Char در کنار نوع integer ، می توان از نوع char استفاده کرد: for NextCh := ‘A’ to ‘Z’ do write(NextCh)
17
دستور Repeat Repeat St; Until boolean_expr
18
دستور Repeat حلقه تا برقرار شدن شرط تکرار اجرا می شود.
شرط تکرار مانند دستور while است. پس از اجرای بدنه حلقه، شرط تکرار بررسی می شود. حلقه حداقل یکبار اجرا می شود. Repeat St; Until B;
19
تبدیل دستور repeat به دستور while
اگر h=0 باشد آنگاه تبدیل به صورت زیر است (تبدیل بستگی به مقدار h دارد!) h=0 i := i*k /h; k := k+h ; h:= h-1 ; While (h<>0) do begin end; h := 10; While (h<>0) do begin i := i*k /h; k := k+h ; h:= h-1 ; end; Repeat i := i*k /h; k := k+h ; h:= h-1 ; Until h=0;
20
مثال : محاسبه تعداد ارقام
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.
21
مثال : پرسيدن يک کاراکتر برای ادامه برنامه
Var c : Char; Begin Repeat Writeln ( ‘ Your program is running! ’ ); Readln (c); Until (c = ‘Y’) or (c = ‘N’) ; Until c = ‘N’ ; Writeln ( ‘ Your program is finished! ’ ); End.
22
مثال : ميانگين تعدادی نامعلوم از اعداد
Var n : Integer; a , Sum : Real; Begin Sum := 0; Repeat Readln (a); If a <> 0 Then Sum := Sum + a; n := n + 1; End; Until a = 0; Writeln (Sum / n); End.
23
دستورهای کنترل حلقه Break : اجرای حلقه را متوقف می کند و کنترل برنامه به دستور بعد از ساختار حلقه می رود. Continue : به مرحله بعدی حلقه می رود. Halt : از برنامه خارج می شود.
24
مثال : ردیابی کنید var i,j : Integer; begin j:= 4; for i:=1 to 4 do
writeln('i:',i,'j:':3,j); if (i=3) then continue; i:=i+1 ; j:=j*2; end; readln; end.
25
اشکال زدایی خطای یک بار بیشتر یا کمتر اجرا شدن بررسی محدوده های حلقه
استفاده از debugger در محیط پاسکال
26
تمرین 1 برنامه ای بنویسید که عدد مفروضی کاربر را حدس می زند. عدد مفروضی کاربر بین 0 تا 9999 است. در ابتدا برنامه از کاربر می خواهد عددی را در نظر بگیرد، سپس با سوالات مناسب عدد را بدست می آورد. سوالات می تواند به صورت «آیا عدد شما بین 100 تا 400 است؟». با توجه به پاسخ کاربر ، برنامه سوال مناسب تری می پرسد. لازم است برنامه در تعداد سوالات بهینه باشد.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.