fortran

58
FORTRAN FORmula TRANslation K.Toosi University of Technology. Computational Physics

Upload: saeed-jh

Post on 25-Oct-2014

312 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Fortran

FORTRANFORmula TRANslation

K.Toosi University of Technology. Computational Physics

Page 2: Fortran

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

Page 3: Fortran

Program_Name.f90

PROGRAM Computational_Physics

IMPLICITE NONE

Program Structure {InputCalculations

Outputs}

END PROGRAM Computational_Physics

Page 4: Fortran
Page 5: Fortran

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

Page 6: Fortran

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

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

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

:چند نکـته

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

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

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

Page 7: Fortran
Page 8: Fortran

INTEGER :: A 1

REAL :: B 2.34568 0

CHARACTER (LEN = 10) :: C BOOK

Page 9: Fortran

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)

Page 10: Fortran

Integer Arithmetic

Real Arithmetic

Page 11: Fortran

:نكته

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

Page 12: Fortran

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

Page 13: Fortran
Page 14: Fortran
Page 15: Fortran
Page 16: Fortran

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

REAL :: XINTEGER :: Y

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

X= ± 2.3 INT (X)= ± 2

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

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

Page 17: Fortran

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

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

Page 18: Fortran

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

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

Page 19: Fortran

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

Page 20: Fortran

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

Page 21: Fortran
Page 22: Fortran

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

Page 23: Fortran
Page 24: Fortran

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

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

Page 25: Fortran

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

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

Page 26: Fortran

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

Page 27: Fortran
Page 28: Fortran

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

Page 29: Fortran

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

Page 30: Fortran

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

Page 31: Fortran

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

Page 32: Fortran
Page 33: Fortran

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

Page 34: Fortran

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

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

Page 35: Fortran

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

Page 36: Fortran
Page 37: Fortran

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

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

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

Page 38: Fortran

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

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

Page 39: Fortran

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

ضرب دو ماتريس

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

REAL, DIMENSION (ndim1 , ndim2) :: value

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

Page 40: Fortran

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

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

Page 41: Fortran

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

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

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

I=10000 ; J=1000;

Allocate (A(I))

Allocate (B(I,J))

Allocate (A(500))

Page 42: Fortran

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

نگارش آزاد

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

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

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

Page 43: Fortran

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

Page 44: Fortran

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توصيف كننده هاي

Page 45: Fortran

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

Page 46: Fortran

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.

Page 47: Fortran

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

Page 48: Fortran

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

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)

Page 49: Fortran

برنامه هازير

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

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

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

SUBROUTINES

FUNCTIONS

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

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

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

Page 50: Fortran

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

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

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

Page 51: Fortran

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

Page 52: Fortran

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

Page 53: Fortran
Page 54: Fortran

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

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

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

Page 55: Fortran
Page 56: Fortran

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

Page 57: Fortran

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

Page 58: Fortran