Professional Documents
Culture Documents
Fortran 1
Fortran 1
ﻓﺮﺗﺮن
ﺑﺨﺶ اول)دﺳﺘﻮرﻫﺎي ﮐﻠﯿﺪي(
اﻣﯿﺮرﺿﺎ ﻫﺎﺷﻤﯽ
ﮐﻠﯿﻪ ﺣﻘﻮق اﯾﻦ ﮐﺘﺎب اﻟﮑﺘﺮوﻧﯿﮏ ﻣﺘﻌﻠﻖ ﺑﻪ ﮔﺮوه دﯾﻨﺎﻣﯿﮏ ﺳﯿﺎﻻت ﻣﺤﺎﺳﺒﺎﺗﯽ داﻧﺸﮕﺎه ﺻﻨﻌﺘﯽ اﺻﻔﻬﺎن ﻣﯽﺑﺎﺷﺪ
http://CFD.iut.ac.ir
ﻣﻘﺪﻣﻪ
زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ ﻓﺮﺗﺮن در ﺳﺎل 1948در داﻧﺸﮕﺎه ﻣﻨﭽﺴﺘﺮ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ .ﮐﻠﻤﻪ fortranﻣﺨﻔﻒ ﻋﺒﺎرت
) formula _ transformationﺗﺮﺟﻤﻪ ﯾﺎ ﺗﺒﺪﯾﻞ ﻓﺮﻣﻮل( و اﯾﻦ اﻣﮑﺎن را در اﺧﺘﯿﺎر ﮐﺎرﺑﺮان ﻗﺮار ﻣﯽداد ﺗﺎ ﻓﺮﻣﻮلﻫﺎ را
در ﺑﺮﻧﺎﻣﻪﻫﺎ ﺑﻪ ﺻﻮرت ﮐﺪ ﮐﺎﻣﭙﯿﻮﺗﺮي درآورﻧﺪ .ﻓﺮﺗﺮن از اﺑﺘﺪا ﺑﻪ ﻋﻨﻮان زﺑﺎن ﻋﻠﻤﯽ و ﻣﻬﻨﺪﺳﯽ ﺷﻨﺎﺧﺘﻪ ﺷﺪه ﺑﻮد ﻧﺎم
ﻓﺮﺗﺮن ﻣﻌﺮف ﻫﻤﯿﻦ ﻣﻮﺿﻮع ﻣﯽﺑﺎﺷﺪ.
ﻓﺮﺗﺮنﻫﺎ ﻣﻌﻤﻮﻻً ﺑﺮاﺳﺎس ﺳﺎل ﺗﻮﻟﯿﺪ آن ﻧﺎمﮔﺬاري ﻣﯽﮔﺮدﻧﺪ ﻣﺜﻼً ﻓﺮﺗﺮن 66ﻣﺮﺑﻮط ﺑﻪ ﺳﺎل 1966و ﻓﺮﺗﺮن 77ﻣﺮﺑﻮط
ﺑﻪ ﺳﺎل 1977و ﻓﺮﺗﺮن 90ﻣﺮﺑﻮط ﺑﻪ دﻫﻪ 80اﺳﺖ ﮐﻪ در اﺑﺘﺪا ﺑﺎ ﻋﻨﻮان ﻓﺮﺗﺮن 8xو ﻧﺴﺨﻪ ﺗﮑﻤﯿﻠﯽ آن در ﺣﻮاﻟﯽ
ﺳﺎل 1990در اﺧﺘﯿﺎر ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﻗﺮار ﮔﺮﻓﺖ .ﺑﻌﺪ از آن ﻧﯿﺰ ﻓﺮﺗﺮن 95در ﺳﺎل 1995ﺑﻪ ﺑﺎزار آﻣﺪ ﮐﻪ در ﻣﯿﺎن اﯾﻦ
ﻧﺴﺦ ﻓﺮﺗﺮن 77ﺑﻪ دﻟﯿﻞ ﭘﯿﺸﺮﻓﺘﻬﺎي ﻧﺴﺒﺖ ﺑﻪ ﻧﺴﺨﻪ ﻗﺒﻞ )ﻓﺮﺗﺮن (66ﻣﻮرد ﺗﻮﺟﻪ ﺑﺴﯿﺎري ﻗﺮار ﮔﺮﻓﺖ اﻣﺎ ﺑﺎ وﺟﻮد
ﭘﯿﺸﺮﻓﺘﻬﺎي ﺻﻮرت ﮔﺮﻓﺘﻪ ﻧﻘﺺﻫﺎﯾﯽ از ﺟﻤﻠﻪ ﻋﺪم اﻣﮑﺎن ﺗﺨﺼﯿﺺ "ذﺧﯿﺮه دﯾﻨﺎﻣﯿﮏ" و ﻫﻤﭽﻨﯿﻦ وﺟﻮد ﺑﺮﺧﯽ
دﺳﺘﻮرﻫﺎي ﻧﺴﺦﺷﺪه در ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ ﺑﺎﻋﺚ ﺷﺪ ﺗﺎ ﺳﺎزﻧﺪﮔﺎن ﺑﺎ اراﺋﻪ ﻧﺴﺨﻪ 90ﻋﻼوه ﺑﺮ رﻓﻊ اﯾﻦ ﻣﺸﮑﻼت اراﺋﻪ ﺷﺪ
ﺳﯿﺴﺘﻢﻫﺎي ذﺧﯿﺮه اﻃﻼﻋﺎت در آن ﺑﻬﺒﻮد ﯾﺎﻓﺖ.
ﻧﺎمﻫﺎي ﻣﺠﺎز:
ﻧﺎم ﻣﺘﻐﯿﺮﻫﺎ و ﭘﺎراﻣﺘﺮﻫﺎ در ﻓﺮﺗﺮن از ﮐﺎراﮐﺘﺮﻫﺎي ﺣﺮﻓﯽ ،ﻋﺪدي و ﻫﻤﭽﻨﯿﻦ "_" underlineﻣﯽﺗﻮان اﺳﺘﻔﺎده ﮐﺮد.
ﻣﻼﺣﻈﺎت:
.1ﻃﻮل ﻧﺎمﻫﺎ در ﻓﺮﺗﺮن ﺗﺎ 31ﮐﺎراﮐﺘﺮ و اوﻟﯿﻦ ﮐﺎراﮐﺘﺮ آن ﺑﺎﯾﺪ ﮐﺎراﮐﺘﺮ ﺣﺮﻓﯽ ﺑﺎﺷﺪ.
.2در ﻓﺮﺗﺮن ﺣﺮوف ﺑﺰرگ و ﮐﻮﭼﮏ ﺗﻔﺎوﺗﯽ ﻧﺪارد .ﺑﺮاي ﻣﺜﺎلSeLEct = sEleCT :
.3ﺑﺮﺧﯽ از ﮐﻠﻤﺎت ﺑﻪ ﻋﻨﻮان دﺳﺘﻮرﻫﺎي ﮐﻠﯿﺪي اﺳﺖ و ﻧﺒﺎﯾﺪ ﺑﻪ ﻋﻨﻮان ﻧﺎم ﻣﺘﻐﯿﺮﻫﺎ و ﭘﺎراﻣﺘﺮﻫﺎ اﺳﺘﻔﺎده ﺷﻮد.
ﺑﺮاي ﻣﺜﺎل abs , sqrt , if , do ,...
ﻣﺜﺎلﻫﺎﯾﯽ از ﻧﺎمﻫﺎي ﻏﯿﺮﻣﺠﺎز ﻣﺜﺎلﻫﺎﯾﯽ از ﻧﺎمﻫﺎي ﻣﺠﺎز
iut .university iut _ university
iut university input
123 _Y Y _1234
V /U SOLver
ﻣﺘﻐﯿﺮﻫﺎ:
ﺗﻌﺮﯾﻒ در ﻓﺮﺗﺮن90 ﺗﻌﺮﯾﻒ در ﻓﺮﺗﺮن77 ﻧﻮع ﻣﺘﻐﯿﺮ
INTEGER :: A, I , BETA INTEGER A, I , BETA اﻋﺪاد ﺻﺤﯿﺢ ﺳﺎده
REAL :: FLOAT , SUM REAL FLOAT , SUM اﻋﺪاد اﻋﺸﺎري ﺑﺎ داﻣﻨﻪ ﮐﻢ
REAL (8):: FLOAT , SUM REAL (8) FLOAT , SUM اﻋﺪاد اﻋﺸﺎري ﺑﺎ داﻣﻨﻪ ﺑﻠﻨﺪ) ( Double precision
REAL (KIND = 5) :: FLOAT - ﺗﻌﺮﯾﻒ اﻋﺪاد اﻋﺸﺎري ﺑﺎ داﻣﻨﻪ ﻣﻮردﻧﻈﺮ
دﺳﺘﻮرات ﻓﺮﺗﺮن
END
END PROGRAM
END PROGRAM ﻧﺎم ﺑﺮﻧﺎﻣﻪ)ﺑﺮاي ﻣﺜﺎل ( SOLVER
ﻣﻼﺣﻈﺎت:
.1ﻃﻮل ﻫﺮ ﺧﻂ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ در ﻓﺮﺗﺮن 120ﺗﺎ 80ﮐﺎراﮐﺘﺮ اﺳﺖ.
.2ﺗﺮﺟﯿﺢ ﺑﺮ اﯾﻦ اﺳﺖ ﮐﻪ ﻧﻮع ﻧﻮﺷﺘﻦ ﺑﻪ ﮔﻮﻧﻪاي ﺑﺎﺷﺪ ﮐﻪ ﺧﻂﻫﺎ ﺑﺴﯿﺎر ﺑﻠﻨﺪ ﻧﺒﺎﺷﺪ ،ﻧﻬﺎﯾﺖ ﻃﻮل ﺧﻂ دﺳﺘﻮرات ﺑﻪ
ﮔﻮﻧﻪاي ﺑﺎﺷﺪ ﮐﻪ در ﯾﮏ ﺻﻔﺤﻪ A 4ﺑﺘﻮان ﮐﺪ را ﭘﺮﯾﻨﺖ ﻧﻤﻮد.
ﮐﺎراﮐﺘﺮﻫﺎي ﺧﺎص:
· ! :ﺑﺮاي ﻗﺮار دادن ﺗﻮﺿﯿﺤﺎت در ﻣﯿﺎن ﺑﺮﻧﺎﻣﻪ از اﯾﻦ ﮐﺎراﮐﺘﺮ اﺳﺘﻔﺎده ﻣﯽﺷﻮد و ﺧﻂ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺧﻮد را ﺑﻪ رﻧﮓ
ﺳﺒﺰ در ﻣﯽآﯾﺪ و اﯾﻦ ﺧﻂ در ﺣﯿﻦ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﮐﺎﻣﭙﺎﯾﻞ ﻧﻤﯽﮔﺮدد.
· & :ﺑﺮاي دﺳﺘﻮراﺗﯽ ﮐﻪ ﻃﻮل دﺳﺘﻮرات از ﺣﺪ ﻣﺠﺎز ﺑﯿﺸﺘﺮ ﺑﺎﺷﺪ در اﺑﺘﺪاي ﺧﻂ دوم ﺑﺮاي اﯾﺠﺎد اﺗﺼﺎل ﺑﯿﻦ
ﺧﻄﻮط دﺳﺘﻮر ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽﮔﯿﺮد.
· ; :ﺑﺎ اﯾﻦ ﮐﺎراﮐﺘﺮ ﻣﯽﺗﻮان در ﯾﮏ ﺧﻂ ﭼﻨﺪ دﺳﺘﻮر را ﺗﺎﯾﭗ ﻧﻤﻮد و ﺑﺎ ; از ﻫﻢ ﺟﺪا ﻧﻤﻮد ﻣﻌﻤﻮﻻً دﺳﺘﻮرﻫﺎ در
اﻧﺘﻬﺎي ﻫﺮ ﺧﻂ ﭘﺎﯾﺎن ﻣﯽﯾﺎﺑﺪ و اﺳﺘﻔﺎده از اﯾﻦ ﮐﺎراﮐﺘﺮ ﺗﻮﺻﯿﻪ ﻧﻤﯽﺷﻮد.
ﻋﻤﻠﯿﺎت ﺟﺒﺮي:
** اوﻟﻮﯾﺖ ﺑﯿﺸﺘﺮ ﺑﻪ ﺗﻮان رﺳﺎﻧﺪن)ﻧﻤﺎﯾﯽ(
* ﺿﺮب
/ ﺗﻘﺴﯿﻢ
+ ﺟﻤﻊ
- اوﻟﻮﯾﺖ ﮐﻤﺘﺮ ﺗﻔﺮﯾﻖ
5
4
= 4**5 / 2**3*8 = 16 ﻣﺜﺎل:
2 ´8
3
اﮔﺮ ﻧﻮع ﻋﺒﺎرت و ﻣﺘﻐﯿﺮ ﯾﺎ ﻣﺘﻐﯿﺮ و ﻣﺘﻐﯿﺮ در ﺟﺎﯾﮕﺰﯾﻨﯽﻫﺎ ﯾﮑﺴﺎن ﻧﺒﺎﺷﺪ ﺑﺮاي رﻓﻊ ﻣﺸﮑﻞ از ﻓﺮﻣﺖ زﯾﺮ اﺳﺘﻔﺎده ﻣﯽﺷﻮد:
) A = TYPE ( B
A = INTEGER ﺑﺮاي ﻣﺜﺎل:
B = REAL
)A = INTEGER (B + A
ﺑﺮﺧﯽ ﺗﻮاﺑﻊ دروﻧﯽ در ﻓﺮﺗﺮن:
) ABS (X ﻗﺪر ﻣﻄﻠﻖ
) INT (X ﺟﺰء ﺻﺤﯿﺢ
) NINT ( X ﻧﺰدﯾﮑﺘﺮﯾﻦ ﺑﻪ ﻋﺪد ﺻﺤﯿﺢ
) CEILING ( X ﻧﺰدﯾﮑﺘﺮﯾﻦ ﺑﻪ ﻋﺪد ﺻﺤﯿﺢ ﮐﻮﭼﮑﺘﺮ از Xﻧﺒﺎﺷﺪ
) FLOOR ( X ﻧﺰدﯾﮑﺘﺮﯾﻦ ﺑﻪ ﻋﺪد ﺻﺤﯿﺢ ﺑﺰرﮔﺘﺮ از Xﻧﺒﺎﺷﺪ
) REAL ( X ﺗﺒﺪﯾﻞ ﺑﻪ اﻋﺸﺎري
) MOD ( X ,Y ), MODULE ( X ,Y ﺑﺎﻗﯿﻤﺎﻧﺪه ﺗﻘﺴﯿﻢ
) MAX ( X ,Y ), MIN ( X ,Y ﻣﺎﮐﺰﯾﻤﻢ و ﻣﯿﻨﯿﻤﻢ
ﻋﻤﻠﯿﺎت رﯾﺎﺿﯽ:
) sqrt (x x رﯾﺸﻪ دوم
) exp(x ) exp( x ﻧﻤﺎ رﺳﺎﻧﺪن
log x ln x
ﻟﮕﺎرﯾﺘﻢ ﻃﺒﯿﻌﯽ
log10x log10 x ﻟﮕﺎرﯾﺘﻢ ﻣﻌﻤﻮﻟﯽ
) sin ( x sin x ﺳﯿﻨﻮس زاوﯾﻪ
) cos ( x cos x ﮐﺴﯿﻨﻮس زاوﯾﻪ
) ta n ( x ta n x ﺗﺎﻧﮋاﻧﺖ زاوﯾﻪ
) sinh ( x sinh x ﺳﯿﻨﻮس ﻫﺬﻟﻮﻟﻮي
) cosh ( x cosh x ﮐﺴﯿﻨﻮس ﻫﺬﻟﻮﻟﻮي
) tanh ( x tanh x ﺗﺎﻧﮋاﻧﺖ ﻫﺬﻟﻮﻟﻮي
) sin -1 ( x sin -1 x ﺳﯿﻨﻮس ﻣﻌﮑﻮس
) cos -1 ( x cos -1 x ﮐﺴﯿﻨﻮس ﻣﻌﮑﻮس
) ta n -1 ( x ta n -1 x ﺗﺎﻧﮋاﻧﺖ ﻣﻌﮑﻮس
) cmplx ( x x + iy ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﺮ ﺣﺴﺐ ﻣﻮﻟﻔﻪﻫﺎي اﻋﺸﺎري و ﻣﻮﻫﻮﻣﯽ
) conjg ( x x - iy ﻣﺰدوج ﻣﺨﺘﻠﻂ
ﺣﻠﻘﻪﻫﺎي ﺗﮑﺮار:
دﺳﺘﻮر DOﺑﺎ ﺷﻤﺎرﻧﺪه در ﻓﺮﺗﺮن :90
: DO I = 0,10, 2ﻧﺎم ﺣﻠﻘﻪ +ﺗﻮﺿﯿﺤﺎت
ﭘﺎﯾﺎن ﺣﻠﻘﻪ ﺷﺮوع ﺣﻠﻘﻪ ﮔﺎم ﺣﻠﻘﻪ
دﺳﺘﻮرات ﻓﺮﺗﺮن
دﺳﺘﻮرات ﻓﺮﺗﺮن
END DO LOOP 1
DO VARTIANLE = START , END , PITCH ﺷﮑﻞ ﮐﻠﯽ ﺣﻠﻘﻪ
é ( END - START ) ù
ê ú :ﺗﻌﺪاد دﻓﻌﺎﺗﯽ ﮐﻪ ﺣﻠﻘﻪ اﺟﺮا ﻣﯽﺷﻮد
ë PITCH û
:ﺣﻠﻘﻪﻫﺎي ﺑﯽﻧﻬﺎﯾﺖ
DO DO
دﺳﺘﻮرات دﺳﺘﻮرات
EXIT CIRCLE
دﺳﺘﻮرات دﺳﺘﻮرات
END DO END DO
DO I = 0,100 DO I = 0,100
دﺳﺘﻮرات دﺳﺘﻮرات
IF (Q <= 0) EXIT IF (Q <= 0) CIRCLE
دﺳﺘﻮرات دﺳﺘﻮرات
END DO END DO
:77دﺳﺘﻮر ﺣﻠﻘﻪ در ﻓﺮﺗﺮن
DO LABEL WHILE (log ic statement )
77دﺳﺘﻮرات ﻓﺮﺗﺮن
LABEL CONTINUE
:ﻣﺜﺎل
DO 100 I = 0,10
77دﺳﺘﻮرات ﻓﺮﺗﺮن
100 CONTINUE
ﻋﺒﺎرات ﻣﻨﻄﻘﯽ:
ﻫﻤﺎﻧﻄﻮر ﮐﻪ ﮔﻔﺘﻪ ﺷﺪ ﻋﺒﺎرتﻫﺎي ﻣﻨﻄﻘﯽ ﺑﻪ ﺷﮑﻞ زﯾﺮ ﺗﻌﺮﯾﻒ ﻣﯽﮔﺮدﻧﺪ ﮐﻪ ﺗﻌﺮﯾﻒ اﯾﻦ ﻋﺒﺎرتﻫﺎ در ﺣﻠﻘﻪﻫﺎي ﺷﺮﻃﯽ
ﺑﺮاي اﻋﻤﺎل ﻗﯿﻮد ﻣﻮردﻧﯿﺎز اﺳﺖ ﺑﻪ اﯾﻦ ﺗﺮﺗﯿﺐ:
LOGICAL :: RIGHT ,WRONG ﺗﻌﺮﯾﻒ ﻋﺒﺎرت ﻣﻨﻄﻘﯽ
.TRUE . درﺳﺖ
.FALSE . ﻏﻠﻂ
LOGICAL , PARAMETER ::T = .TRUE . ﺑﺮاي ﻣﺜﺎل:
ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﯽ:
.AND . و
.OR . ﯾﺎ
.EQV . ﻣﺴﺎوي ﺑﺎ
.NEQV . ﻧﺎﻣﺴﺎوي ﺑﺎ
ﻋﻤﻠﮕﺮﻫﺎي ﻗﯿﺎﺳﯽ:
ﻓﺮﺗﺮن77 ﻓﺮﺗﺮن90
.lt . < ﮐﻮﭼﮑﺘﺮ از
less than
دﺳﺘﻮرات ﻓﺮﺗﺮن
end if label
label : if (10.lt .A.ge .20) then ﺑﺮاي ﻣﺜﺎل
save = A
end if label
label : if (log ic statement ) then : ﺑﺎ دو ﺑﻠﻮكIF دﺳﺘﻮر
دﺳﺘﻮرات ﻓﺮﺗﺮن
else
دﺳﺘﻮرات ﻓﺮﺗﺮن
end if label
label : if (A.gt .B ) then ﺑﺮاي ﻣﺜﺎل
C = A/B
else
C =B /A
end if label
label : if (first log ic statement ) then : ﺑﺎ ﺑﻠﻮكﻫﺎي ﺗﻮدرﺗﻮIF دﺳﺘﻮر
دﺳﺘﻮرات ﻓﺮﺗﺮن
else if (sec ond log ic statement ) then
دﺳﺘﻮرات ﻓﺮﺗﺮن
else if (third log ic statement ) then
دﺳﺘﻮرات ﻓﺮﺗﺮن
دﺳﺘﻮرات ﻓﺮﺗﺮن
else
دﺳﺘﻮرات ﻓﺮﺗﺮن
end if label
label : if (1800 <= year < 1900) then ﺑﺮاي ﻣﺜﺎل
CENT = 19th
else if (1900 <= year < 2000) then
CENT = 20th
else if (2000 <= year ) then
CENT = 21th
end if label