امروز ...

صفحه بعدصفحه قبللیست مطالب فرترنبخش آموزش

 

- کنترل اجراي برنامه

براي نوشتن برنامه هاي کاربردي تر علاوه بر استفاده از متغيرها و توابع مي بايست از دستورات متفاوتي که در اين بخش توضيح داده مي شود استفاده کنيم .

- دستور و ساختار شرط

چنانچه در برنامه نويسي بخواهيم در صورت برقراري شرطي اتفاقي بيفتد ( نيفتد ) از ساختار يا دستور شرط استفاده مي کنيم . دستور شرط به صورت زير تعريف مي شود :

يک دستور ( عبارت شرطي ) IF

 فرترن ابتدا عبارت شرطي را محاسبه و به يکي از دو حالت صحيح يا غلط مي رسد چنانچه عبارت شرطي درست باشد ، دستور داده شده اجرا مي شود . بايد توجه داشت که تنها يک دستور مي توان نوشت .

چنانچه بخواهيم بيش از يک دستور را در يک شرط اعمال کنيم و يا اينکه شروط مختلفي را با دستورات مختلف اعمال کنيم مي توانيم به شکل زير از ساختار شرط استفاده کنيم :

Then ( عبارت شرطي 1 ) IF

بلوک دستورات

Then (عبارت شرطي 2 ) Else IF

بلوک دستورات

.

.

.

Else

 بلوک دستورات

End IF

در ساختار شرط قسمتها Else IF و Else کاملا اختياري مي باشند اما چنانچه نوشته شوند مي بايست از کلمه Then  استفاده شود . استفاده از End IF براي پايان ساختار الزامي است . در توضيح ساختار شرط مي توان گفت که پس از بررسي شرط اول ، چنانچه درست باشد بلوک دستورات مربوط به آن را اجرا مي کند و در غير اينصورت شرط بعدي را چک ميکند . چنانچه هيچ يک از دستورات بالا اجرا نشود و قسمت Else در ساختار شرط آمده باشد بلوک دستوري مربوط به Else اجرا خواهد شد

در واقع Else  داراي عبارت شرطي معادل با ترکيب نقيض شروط بالاست .

 در برنامه زير چنانچه عدد وارد شده يک يا دو رقمي باشد عبارت مناسب چاپ مي شود :

Read *,I

If ( I<=0 .Or. I<10 ) Then

Print *,”Your Number has one digit”

Else If ( I<100 .Or. I>9 ) Then

Print *,”Your Number has two digits”

Else

Print *,”Your Number has more than three digits”

End If

End

برنامه زير  سينوس يک زاويه که بر حسب راديان است را  خوانده و تانژانت آنرا  نمايش مي دهد .

Read *,A

If ( A<=1 .And. A>=-1) Then

Ang=Asin(A)

Print *,Ang*180/3.141592,Tan(Ang)

End If

End

- ساختار انتخاب

اين ساختار حالت خاصي از ساختار شرط است . حالت کلي اين ساختار به شرح زير است

( عبارت مورد نظر ) Select Case

( حالت اول عبارت ) Case

بلوک دستورات

( حالت دوم عبارت ) Case

بلوک دستورات

.

.

.

Case Default

بلوک دستورات

End Select

اين ساختار معادل دستورات شرط زير است :

Then ( حالت اول == عبارت شرطي ) If

بلوک دستورات

Then ( حالت دوم == عبارت شرطي ) Else If

بلوک دستورات

.

.

.

Else

بلوک دستورات

End IF

همانگونه که از مقايسه دو ساختار بالا بدست مي آيد بلوک دستورات زماني اجرا مي شود که عبارت مورد نظر يکي از حالات ذکر شده باشد و Case default معادل Else در ساختار شرط است يعني اگر هيچ کدام از بلوک هاي دستور اجرا نشوند بلوک دستوري اين قسمت اجرا خواهد شد .

بايد توجه داشته باشيد که حالات ذکر شده بايد از نوع عبارت مورد نظر باشند و نبايد اشتراک داشته باشند . عبارت مورد نظر ساختار تنها يکي از سه حالت Integer ، Character ، Logical مي باشد .

در دو برنامه زير چنانچه عدد يک وارد شود برنامه عدد 100 و در غير اينصورت عدد 0 را چاپ خواهد کرد

برنامه اول : استفاده از نوع صحيح

Integer A

Read *,A

Select Case (A)

Case (1)

Print *,”100”

Case default

Print *,”0”

End select

End

برنامه دوم : استفاده از نوع منطقي

Logical L1

 Integer A

Read *,A

L1=(A==1)

Select Case (L1)

Case (.True.)

Print *,”100”

Case (.False.)

Print *,”0”

End select

End

براي ايجاد گستره انتخاب از : استفاده مي شود به اين صورت که n:m يعني کليه اعداد صحيح از عدد n تا عدد m ( با احتساب n و m ) و n: يعني تمامي اعداد صحيح بزرگتر مساوي عدد n و :m يعني تمامي اعداد کوچکتر يا مساوي عدد m

از : مي توان براي کاراکترها نيز استفاده کرد . در برنامه زير يک حرف از کاربر گرفته مي شود و نوع آن مشخص مي شود .

Character *1 C1

Read *,C1

Select Case (C1)

Case (“a”:”z”,”A”:”Z”)           

Print *,”Alphabetic”               

Case ( “0”:”9”)            

Print *,”Number”               

Case Default        

Print *,”Other”              

End Select

End

از برنامه بالا مي توان فهميد که در مقابل Case مي توان بيش از يک حالت را قرار داد . همچنين حالت عددي از نوع کاراکتر مي باشد و هيچ اشتراکي بين حالات نيست .

- دستور پرش ساده

اگر بخواهيم ادامه اجراي برنامه را از سطر خاصي شروع کنيم مي توانيم از دستور پرش استفاده کنيم :

Goto Label

که Label يک عدد مي باشد که در ابتداي خط مقصد نوشته مي شود . استفاده از دستور پرش بدون اختصاص Label موجب نمايش پيغام خطا خواهد شد . در ادامه مثالي از اين مطلب آورده خواهد شد .

- دستور پرش محاسباتي

عدد Goto ( Label1 , Label2 , …)

اين دستور ابتدا عدد مورد نظررا محاسبه کرده و چنانچه مقدار آن يک باشد به عددي که به عنوان label 1 نوشته شده است پرش مي کند و ... اگر عدد مورد نظر منفي و يا داراي اعشار باشد و يا هيچ Label به آن اختصاص داده نشده باشد ، دستور کار خاصي انجام نمي دهد .

برنامه زير ريشه هاي معادله درجه دو را تنها با استفاده از دستور پرش و دستور پرش  محاسباتي ، محاسبه مي کند :

Read *,A,B,C

Delta=b**2-4*A*C

Goto ( 10 , 20 ) Floor(Delta/(ABS(Delta)+1))+2

10 Print *,”there is no root “

Goto 30

20 Print *,”x1=”,(-B+Sqrt(Delta))/2/A

Print *,”x1=”,(-B-Sqrt(Delta))/2/A

30 End

- دستور ادامه

اين دستور به صورت Continue نوشته مي شود و گاهي اوقات به همراه يک Label در ابتداي خط مي آيد . اجراي اين دستور باعث ادامه پردازش به خط بعدي مي شود و کاربرد خاصي در اين زمينه ندارد . از اين دستور مي توان براي خاتمه حلقه نيز استفاده کرد .

- دستور توقف

از اين دستور براي توقف عمليات اجراي برنامه و خاتمه برنامه استفاده مي شود . اين دستور به صورت زير تعريف مي شود :

Stop [Stop-expresion]

مي توانيم دستور Stop را تنها به کار برد و در صورتي که بخواهيم عبارتي را براي بستن برنامه تحت عنوان handle اختصاص دهيم مي توانيم يک رشته و يا يک عدد را قرار دهيم . در صورت به کار بردن رشته عدد صفر منظور مي شود .

- ساختار گردشي - حلقه

چنانچه بخواهيم يک عمل را N بار انجام دهيم يا N متغير که با هم تصاعد عددي دارند داشته باشيم از ساختار حلقه استفاده مي کنيم .حلقه ها بر اساس N به سه دسته تقسيم مي شوند

- حلقه نا محدود

Do [label] : نام حلقه

بلوک دستورات

 ]نام حلقه [ End Do

 

Do label : نام حلقه

بلوک دستورات

Label Continue

- حلقه محدود شرطي

(عبارت شرطي ) Do [Label] [,] While : نام حلقه

بلوک دستورات

]نام حلقه [ End Do

 

(عبارت شرطي ) Do Label [,] While : نام حلقه

بلوک دستورات

Label Continue

- حلقه شمارشي

گام ، کران پايين ، کران بالا = نام متغير Do [Label] : نام حلقه

بلوک دستورات

]نام حلقه [ End Do

 

گام ، کران پايين ، کران بالا = نام متغيرDo Label : نام حلقه

بلوک دستورات

Label Continue

در برنامه زير با استفاده از حلقه شمارشي !N محاسبه مي شود :

Read *,N

Factoriel=1

Do i=1,N

Factoriel=Factoriel*I     

End Do

Print *,N,”!=”,Factoriel

End

در برنامه زير مقدار   محاسبه و چاپ مي شود :

F=1 ; Sum=1

Do i= 1,100

F=F*I                  

Sum=Sum+(2**i)/F      

End Do

Print *,Sum

End

- دستور خروج از حلقه

دستور Exit   براي خروج از حلقه اي است که خود دستور در آن قرار دارد . چنانچه در مقابل اين دستور نام حلقه اي ذکر شود ، دستور خروج براي آن حلقه اجرا خواهد شد .

- دستور گردش حلقه

چنانچه فرترن در اجراي برنامه به دستور Cycle برسد دستورات بين Cycle و اولين End Do انجام نخواهد شد .

در برنامه زير عدد 1 را بر اعداد 100- تا 100 تقسيم کرده ايم و خروجي آن مقدار اين عبارت است . همچانکه مي دانيد تقسيم بر صفر معني ندارد و براي انجام ندادن تقسيم بر صفر از دستور Cycle استفاده کرده ايم :

Do i=-100 , 100

          IF ( i==0) Cycle        

                   Print *,1./i.        

End Do

End

 

صفحه بعد

صفحه قبل

لیست مطالب فرترن

بخش آموزش

 

 

قوانین حقوق مولفان 2008 ، گروه نرم افزاری سی سی ،شرایط و ضوابط سایت را مطالعه نمایید