Download - Fortran
![Page 1: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/1.jpg)
FORTRANFORmula TRANslation
K.Toosi University of Technology. Computational Physics
![Page 2: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/2.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/3.jpg)
Program_Name.f90
PROGRAM Computational_Physics
IMPLICITE NONE
Program Structure {InputCalculations
Outputs}
END PROGRAM Computational_Physics
![Page 4: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/4.jpg)
![Page 5: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/5.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/6.jpg)
IMPLICIT دستور اگر NONE نها نام اول حرف که هايــي متغيير فرض پيش بطور نشود، استفاده برنامه اول درٓ حروف از يکي ا
I,J,K,L,M,N ،صحيح متغيير عنوان به باشد (INTEGER) اعشاري يا حقيقي اينصورت غير در و (REAL) اين( .رود مي شمار به
)!شود نمي توصيه روند
:چند نکـته
نها بين ; عالمت درج با هم سر پشت و سطر يک در توان مي را دستور چندين ٓ .نوشت ا
.ندارند هم با تفاوتي فرترن در بزرگ و کوچک حروف
.شود مي صرفنظر فرترن، در برنامه نوشتن در اضافي (space) فاصله دادن قرار
![Page 7: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/7.jpg)
![Page 8: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/8.jpg)
INTEGER :: A 1
REAL :: B 2.34568 0
CHARACTER (LEN = 10) :: C BOOK
![Page 9: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/9.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/10.jpg)
Integer Arithmetic
Real Arithmetic
![Page 11: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/11.jpg)
:نكته
Y وresult ميتواند عدد صحيح يا اعشاري باشد اماn حتما بايد عدد صحيح باشد
![Page 12: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/12.jpg)
:ترتيب مقدار دهي به متغير ها به عنوان ورودي اهميت دارد
![Page 13: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/13.jpg)
![Page 14: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/14.jpg)
![Page 15: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/15.jpg)
![Page 16: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/16.jpg)
:چند دستور كاربردي
REAL :: XINTEGER :: Y
INT (X)عدد اعشاري را به عدد صحيح تبديل ميكند
X= ± 2.3 INT (X)= ± 2
REAL (X)تبديل ميكنداعشاري را به عدد صحيح عدد
X= ± 2 INT (X)= ± 2.
![Page 17: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/17.jpg)
:چند دستور كاربردي
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/18.jpg)
:چند دستور كاربردي
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/19.jpg)
وقتي يك عبارت منطقي برقرار باشد دستوري اجرا شود
![Page 20: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/20.jpg)
دستوري ديگر اجرا گردددر غير اين صورت وقتي يك عبارت منطقي برقرار باشد دستوري اجرا شود
![Page 21: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/21.jpg)
![Page 22: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/22.jpg)
اجراي دستورات متفاوت به ازاي برقراري شرط هاي مختلف
![Page 23: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/23.jpg)
![Page 24: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/24.jpg)
حلقه براي اجراي مكرر يك دستور استفاده مي شوند
شود، اجرا مي شوندتا زماني كه يك شرط خاص برقرار دستورات به صورت نامتناهي
![Page 25: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/25.jpg)
تا زماني كه شرط منطقي برقرار باشد، دستورات در حلقه اجرا مي شود
معموال شرط در حلقه تغيير مي كند
![Page 26: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/26.jpg)
حلقه تكرار شونده با گام و تعداد تكرار معين
![Page 27: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/27.jpg)
![Page 28: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/28.jpg)
حلقه هاي تو در تو
![Page 29: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/29.jpg)
هاي هم نوع است كه توسط يك نام به آنها ارجاع داده مي شودگروهي از متغير
![Page 30: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/30.jpg)
آرايه ها متغير هاي معمولي هستند
![Page 31: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/31.jpg)
مقدار دهي به آرايه ها
![Page 32: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/32.jpg)
![Page 33: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/33.jpg)
تعيين حد باال و پايين يك آرايه
![Page 34: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/34.jpg)
مقدار دهي بايد به اندازه ي تعداد خانه ها باشد. توجه به تعداد خانه هاي آرايه بسيار مهم است
استفاده از مقادير ثابت در آرايه ها
![Page 35: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/35.jpg)
. آرايه ها همانند بردار عمل مي كنندفرترن محاسبات برداري را مي فهمد
![Page 36: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/36.jpg)
![Page 37: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/37.jpg)
)ماتريس(تعريف آرايه هاي دو بعدي
مقدار دهي به ماتريس ها
READ* , istatداده ها به صورت ستوني در فرترن خوانده مي شود
![Page 38: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/38.jpg)
چند دستوركاربردي
استفاده از توابع داخلي فرترن در هنگام كار با آرايه ها
![Page 39: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/39.jpg)
چند دستوركاربردي
ضرب دو ماتريس
)اسكالر(حاصل ضرب نقطه اي دو بردار
REAL, DIMENSION (ndim1 , ndim2) :: value
اگر مقدار ارايه ها صفر يا منفي باشد، برنامه دچار خطا مي شود
![Page 40: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/40.jpg)
است IFو يك DOاولين راهي كه براي رفع مشكل به ذهن مي رسد استفاده از يك حلقه ي
است whereراه ساده تر استفاده از دستور
![Page 41: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/41.jpg)
ميتوان عالوه بر مقادير آرايه، ابعاد آن را نيز در هنگام اجراي برنامه كنترل نمود
:فرض ميكنيم كاربر عالوه بر مقدار دهي به ارايه مجاز باشد ابعاد آن را نيز در ابتدا تعيين كند
REAL, ALLOCATABLE :: A( : ) , B( : , : )INTEGER :: I,J
I=10000 ; J=1000;
Allocate (A(I))
Allocate (B(I,J))
Allocate (A(500))
![Page 42: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/42.jpg)
نگارش نتيجه خروجي به صورت كنترل شده
نگارش آزاد
WRITE(*,*) " The result for iteration " , i, result
....)مانيتور، فايل، (محل خروجي را مشخص مي كند قرمزمكان ستاره نحوه نگارش در خروجي را مشخص مي كند آبيمكان ستاره
I3 وF7.3 توصيف كننده هاي دستورFORMAT متناظر با متغير هايi وresult است
![Page 43: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/43.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/44.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/45.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/46.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/47.jpg)
خواندن و نوشتن اطالعات در فايل
![Page 48: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/48.jpg)
خواندن و نوشتن اطالعات در فايل
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](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/49.jpg)
برنامه هازير
.در يك برنامه بخش هاي مختلف مي توانند جداگانه طراحي و كامپايل شوند
اين بخش ها را زير برنامه مي گويند
:در فرترن دو نوع زير برنامه وجود دارد
SUBROUTINES
FUNCTIONS
.زير برنامه ها ميتوانند به دفعات در برنامه اصلي اجرا شوند
ساب روتين ها مي توانند نتايج چند گانه را برگردانند
توابع تنها يك نتيجه را بر مي گردانند
![Page 50: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/50.jpg)
متغير هاي ورودي و خروجي)اعالم نمودن ورودي يا خروجي بودن متغير(تعيين نوع متغيرها دستورات قابل اجرا
. فراخاني ميشود CALLساب روتين با دستور
به هنگام فراخواني بايد متغيير هاي ورودي و خروجي را در ساب روتين معرفي كنيم
![Page 51: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/51.jpg)
ساب روتيني كه وتر يك مثلث قائم الزاويه را محاسبه مي كند
![Page 52: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/52.jpg)
برنامه اي براي استفاده از ساب روتين وتر مثلث
![Page 53: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/53.jpg)
![Page 54: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/54.jpg)
استفاده MODULEبراب به اشتراك گذاشتن متغير ها بين ساب روتين و برنامه اصلي مي توان از كرد
متغير ها در ماژول تعريف مي شوند
فراخواني مي شوند USEمتغير ها با دستور
![Page 55: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/55.jpg)
![Page 56: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/56.jpg)
عالوه بر متغير ها، يك ساب روتين را نيز ميتوان با ماژول به اشتراك گذاشت
![Page 57: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/57.jpg)
خروجي يك تابع يك تك عدد، يك مقدار منطقي، يك رشته و يا يك آرايه است
![Page 58: Fortran](https://reader033.vdocument.in/reader033/viewer/2022050807/544aa6c1b1af9f95348b460c/html5/thumbnails/58.jpg)