پاورپوینت عمليات تکرار (pptx) 23 اسلاید
                                    
                                    دسته بندی : پاورپوینت
                                    نوع فایل :  PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
                                    تعداد اسلاید: 23 اسلاید
 
                                    قسمتی از متن PowerPoint (.pptx) :
                                    بنام خدا
1
2
عمليات تکرار Repetition
از مهمترين ويژگيهای هر زبان برنامه نويسی است که اجازه می دهد تا يک بلوک از دستورات مکرراً اجرا گردد.
ساختار DO   (DO Construct) در فرترن
جهت تکرار بلوک هايي از دستورات مختلف
فرم کلی
[name:]	DO 	[Control Clause شرط کنترل ]
block                     	
			END DO [name]
3
انواع حلقه های DO
حلقه با تکرار نامحدود
[name:] DO
		          block of statements
		      END DO [name]
باعث تکرار بلوک تا بی نهايت می گردد
مثال:
e=1.0; 	k=1;	j=1
DO 
		e=e+1.0/REAL(j)
		k=k+1
		j=j*k
		
END DO
در اين نوع حلقه برنامه به وضوح متوقف نمی شود
برنامه تا انجا ادامه می دهد تا j از برد پردازنده بيشتر شود
4
کنترل حلقه DO بی نهايت 
دستور EXIT ( همراه با دستور IF)
کنترل به اولين دستور بعد از END DO می رود
مثال:
INTEGER::ifib(100)
Ifib(1)=1;	ifib(2)=1;  i=3
DO
		ifib (i)=ifib(i-1)+ifib(i-2)
		i=i+1
		IF(i>100)EXIT
END DO
5
دستور STOP
دستوری ساده ولی قوی (شبيه تابع exit در C)
اين دستور اجرای برنامه را در هر جا که باشد (ازجمله داخل حلقه تکرار) متوقف می کند
اين دستور با يد همراه با نوعی از دستور IF باشد
IF (condition) STOP
يا
IF (condition) THEN
		block  of statements
		STOP
END IF
6
حلقه DO WHILE
فرم کلی
DO WHILE (condition)
		block of statements
END DO
ماداميکه condition به صورت TRUE باشد حلقه تکرار خواهد شد در غير اينصورت کنترل به دستور بعد از END DO می رود
اين حلقه معادل حالت زير است:
DO
		IF (.NOT. condition) EXIT
		block of statements
END DO
7
مثال
x=1.0;	y=1.0;	z=1.0;	count=0
Sample:DO WHILE ((x**2+y**2+z**2)<1000000.0)
			xplus=10.0*(y-x)
yplus=x*z+28.0*x-y
zplus	=x*y-8.0*z/3.0
Test=ABS(xplus)+ABS(yplus)+ABS(zplus)
IF (test<=0.000001)EXIT
Count=count+1
		    END DO sample
8
دستور CYCLE در حلقه های DO
برای جهش به پايين بلوک و برگشت به ابتدای آن ولی با اين دستور کنترل از حلقه خارج نمی شود
معادل continue  در C
Do
		WRITE(*,*) “type the password”
		READ(*,*)yourword
		IF (yourword/=password)CYCLE
		WRITE(*,*)”that’s right, now type a new password”
		READ(*,*) password
		WRITE(*,*) “the new password is”,password
		EXIT
END DO
اگر کلمه رمز درست تايپ نشود کاربر هرگز نمی تواند از حلقه خارج شود
9
حلقه های متداخل و دستور های EXIT و  CYCLE 
به منظور جلوگيری از اغتشاش بهتر است حتماً حلقه ها دارای اسم باشند (به مثال زير توجه شود)
PROGRAM averscore 
REAL :: mark, average 
INTEGER:: stid, loop ,n
WRITE(*,*)”type in the number of students”
mainloop: DO 
                      WRITE(*,*) 'Please give student id' 
                      READ(*,*) stid 
                      IF (stid==0) EXIT mainloop 
                      average=0 
                     innerloop: DO loop=1,n 
                                            WRITE(*,*) 'Please enter mark' 
                                            READ(*,*) mark  
                                            IF (mark==0) CYCLE innerloop 
                                            negs: IF (mark<0) THEN 
                                                    WRITE(*,*) 'Wrong mark. Start again' 
                                                   CYCLE mainloop 
                                            END IF negs 
                                            average=(average+mark) 
                                         END DO innerloop 
                     average=(average)/n 
                      WRITE(*,*) 'Average of student',stid,' is = ',average 
                 END DO mainloop 
END PROGRAM averscore 
اگر در دستور CYCLE نام حلقه مشخص نشود تکرار در داخلی ترين حلقه مد نظر قرار می گيرد