fortran

Post on 25-Oct-2014

312 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

FORTRANFORmula TRANslation

K.Toosi University of Technology. Computational Physics

Translate scientific equations into computer code.

IBM developed the first version of the FORTRAN 1954 and 1957

FORTRAN II, FORTRAN IV, FORTRAN 66, FORTRAN 77

FORTRAN 90

FORTRAN 95

Program_Name.f90

PROGRAM Computational_Physics

IMPLICITE NONE

Program Structure {InputCalculations

Outputs}

END PROGRAM Computational_Physics

PROGRAM CircleIMPLICIT NONE

! A Simple Program For Calculating Circle Area

REAL :: r, areaWRITE(*,*) ‘Enter radius r:’

READ(*,*) r

area= 3.14159*r*r

PRINT*, ‘area=’ , area

STOP ! Optional

END PROGRAM Circle

IMPLICIT دستور اگر NONE نها نام اول حرف که هايــي متغيير فرض پيش بطور نشود، استفاده برنامه اول درٓ حروف از يکي ا

I,J,K,L,M,N ،صحيح متغيير عنوان به باشد (INTEGER) اعشاري يا حقيقي اينصورت غير در و (REAL) اين( .رود مي شمار به

)!شود نمي توصيه روند

:چند نکـته

نها بين ; عالمت درج با هم سر پشت و سطر يک در توان مي را دستور چندين ٓ .نوشت ا

.ندارند هم با تفاوتي فرترن در بزرگ و کوچک حروف

.شود مي صرفنظر فرترن، در برنامه نوشتن در اضافي (space) فاصله دادن قرار

INTEGER :: A 1

REAL :: B 2.34568 0

CHARACTER (LEN = 10) :: C BOOK

LOGICAL :: D .TRUE. , .FALSE.

REAL PARAMETER :: PI PI=3.14

INTEGER PARAMETER :: SPIN SPIN =1

CHARACTER PARAMETER :: NAME NAME =''ALI''

COMPLEX :: F 3+5i F=(3,5)

Integer Arithmetic

Real Arithmetic

:نكته

Y وresult ميتواند عدد صحيح يا اعشاري باشد اماn حتما بايد عدد صحيح باشد

:ترتيب مقدار دهي به متغير ها به عنوان ورودي اهميت دارد

:چند دستور كاربردي

REAL :: XINTEGER :: Y

INT (X)عدد اعشاري را به عدد صحيح تبديل ميكند

X= ± 2.3 INT (X)= ± 2

REAL (X)تبديل ميكنداعشاري را به عدد صحيح عدد

X= ± 2 INT (X)= ± 2.

:چند دستور كاربردي

REAL :: XINTEGER :: Y

NINT (X)را به ما مي دهد Xنزديك ترين عدد صحيح به

X= ± 2.3 NINT (X)= ± 2X= ± 2.6 NINT (X)= ± 3

FLOOR (X)را به ما مي دهد Xبه صحيح نزديك ترين عدد كوچك

X= + 2.3 FLOOR (X)= + 2X= + 2.6 FLOOR (X)= + 2

X= - 2.3 FLOOR (X)= - 3X= - 2.6 FLOOR (X)= - 3

:چند دستور كاربردي

REAL :: XINTEGER :: Y

CEILING (X)را به ما مي دهد Xترين عدد صحيح نزديك به بزرگترين

X= + 2.3 CEILING (X)= + 3X= + 2.6 CEILING (X)= + 3

X= - 2.3 CEILING (X)= - 2X= - 2.6 CEILING (X)= - 2

وقتي يك عبارت منطقي برقرار باشد دستوري اجرا شود

دستوري ديگر اجرا گردددر غير اين صورت وقتي يك عبارت منطقي برقرار باشد دستوري اجرا شود

اجراي دستورات متفاوت به ازاي برقراري شرط هاي مختلف

حلقه براي اجراي مكرر يك دستور استفاده مي شوند

شود، اجرا مي شوندتا زماني كه يك شرط خاص برقرار دستورات به صورت نامتناهي

تا زماني كه شرط منطقي برقرار باشد، دستورات در حلقه اجرا مي شود

معموال شرط در حلقه تغيير مي كند

حلقه تكرار شونده با گام و تعداد تكرار معين

حلقه هاي تو در تو

هاي هم نوع است كه توسط يك نام به آنها ارجاع داده مي شودگروهي از متغير

آرايه ها متغير هاي معمولي هستند

مقدار دهي به آرايه ها

تعيين حد باال و پايين يك آرايه

مقدار دهي بايد به اندازه ي تعداد خانه ها باشد. توجه به تعداد خانه هاي آرايه بسيار مهم است

استفاده از مقادير ثابت در آرايه ها

. آرايه ها همانند بردار عمل مي كنندفرترن محاسبات برداري را مي فهمد

)ماتريس(تعريف آرايه هاي دو بعدي

مقدار دهي به ماتريس ها

READ* , istatداده ها به صورت ستوني در فرترن خوانده مي شود

چند دستوركاربردي

استفاده از توابع داخلي فرترن در هنگام كار با آرايه ها

چند دستوركاربردي

ضرب دو ماتريس

)اسكالر(حاصل ضرب نقطه اي دو بردار

REAL, DIMENSION (ndim1 , ndim2) :: value

اگر مقدار ارايه ها صفر يا منفي باشد، برنامه دچار خطا مي شود

است IFو يك DOاولين راهي كه براي رفع مشكل به ذهن مي رسد استفاده از يك حلقه ي

است whereراه ساده تر استفاده از دستور

ميتوان عالوه بر مقادير آرايه، ابعاد آن را نيز در هنگام اجراي برنامه كنترل نمود

:فرض ميكنيم كاربر عالوه بر مقدار دهي به ارايه مجاز باشد ابعاد آن را نيز در ابتدا تعيين كند

REAL, ALLOCATABLE :: A( : ) , B( : , : )INTEGER :: I,J

I=10000 ; J=1000;

Allocate (A(I))

Allocate (B(I,J))

Allocate (A(500))

نگارش نتيجه خروجي به صورت كنترل شده

نگارش آزاد

WRITE(*,*) " The result for iteration " , i, result

....)مانيتور، فايل، (محل خروجي را مشخص مي كند قرمزمكان ستاره نحوه نگارش در خروجي را مشخص مي كند آبيمكان ستاره

I3 وF7.3 توصيف كننده هاي دستورFORMAT متناظر با متغير هايi وresult است

1 2 34 5 67 8 9

A

WRITE(*,*) A

1 2 3 4 5 67 8 9

DO I=1,3WRITE(*,10) (A(I,J), J= 1, 3)10 FORMAT(3I)

ENDDO

1 2 34 5 67 8 9

F Real number, Floating point format

E Single precision real number, Exponential notation

D Double precision real number, Exponential notation

I IntegerA Text string (character)X Space/ Vertical space (line feed)T Tab indicator

FORMATتوصيف كننده هاي

FORMATچند مثال از توصيف كننده هاي

write (*,10) n, x, y10 format (I4,4X,F10.4,2X,F10.4)

integer n printed using 4 places,then 4 spaces, then real numbersx and y printed with 2 spaces between, each using 10 placesand 4 decimal places

write (*,20) area20 format ("The area is ",F8.5)

string in quotes is printed, then thereal number area is printed, using8 places with 5 decimal places

write (*,30) "The area is ", area30 format (A,f8.5) same output as immediately above

write (*,40) x, y, z40 format (3D20.14)

3 double precision numbers x, y, zprinted, each reserving 20 spaces,with 14 decimal places

write (*,50) student, score50 format (A20,4X,I3)

student, a text string up to 20characters, is printed, then 4spaces, then score, an integerusing a maximum of 3 places

write (*,60) r, A60 format (T10,F4.2,/,T10,F6.2)

tabs to column 10, prints realnumber r, goes to next line, tabs tocolumn 10, prints real number A

FORMATچند مثال از توصيف كننده هاي

do i = 1, 10write (*,70) a(i)

end do70 format (F5.2)

an array a of real numbers,indexed from 1 to 10, is printed;each entry occupies 5 places with2 decimal places, and is printedon a separate line

write (*,80) (a(i), i = 1, 10)80 format (F5.2) same output as immediately above

write (*,90) (a(i), i = 1, 10)90 format (10F5.2)

same output as above, except that all entries are printed on the same line

do i = 1, 5write (*,7) (m(i,j), j = 1, 6)

7 format (6I3)end do

prints a 5 x 6 two-dimensional arraym of integers, with each integer entrym(i,j) occupying 3 places. Each rowof the matrix appears on its own line.

خواندن و نوشتن اطالعات در فايل

خواندن و نوشتن اطالعات در فايل

OPEN(15, FILE="filename")

READ(15,*) x,y

WRITE(15,*) A,B, " Input to file "

WRITE(15,4) C,D,F4 FORMAT(5X,3F.5)

CLOSE(15)

برنامه هازير

.در يك برنامه بخش هاي مختلف مي توانند جداگانه طراحي و كامپايل شوند

اين بخش ها را زير برنامه مي گويند

:در فرترن دو نوع زير برنامه وجود دارد

SUBROUTINES

FUNCTIONS

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

ساب روتين ها مي توانند نتايج چند گانه را برگردانند

توابع تنها يك نتيجه را بر مي گردانند

متغير هاي ورودي و خروجي)اعالم نمودن ورودي يا خروجي بودن متغير(تعيين نوع متغيرها دستورات قابل اجرا

. فراخاني ميشود CALLساب روتين با دستور

به هنگام فراخواني بايد متغيير هاي ورودي و خروجي را در ساب روتين معرفي كنيم

ساب روتيني كه وتر يك مثلث قائم الزاويه را محاسبه مي كند

برنامه اي براي استفاده از ساب روتين وتر مثلث

استفاده MODULEبراب به اشتراك گذاشتن متغير ها بين ساب روتين و برنامه اصلي مي توان از كرد

متغير ها در ماژول تعريف مي شوند

فراخواني مي شوند USEمتغير ها با دستور

عالوه بر متغير ها، يك ساب روتين را نيز ميتوان با ماژول به اشتراك گذاشت

خروجي يك تابع يك تك عدد، يك مقدار منطقي، يك رشته و يا يك آرايه است

top related