You are on page 1of 10

‫»ﺑﻪ ﻧﺎم ﺧﺪا«‬

‫ﮔﺮوه دﯾﻨﺎﻣﯿﮏ ﺳﯿﺎﻻت ﻣﺤﺎﺳﺒﺎﺗﯽ‬

‫داﻧﺸﮕﺎه ﺻﻨﻌﺘﯽ اﺻﻔﻬﺎن‬

‫ﻓﺮﺗﺮن‬
‫ﺑﺨﺶ اول)دﺳﺘﻮرﻫﺎي ﮐﻠﯿﺪي(‬

‫اﻣﯿﺮرﺿﺎ ﻫﺎﺷﻤﯽ‬

‫ﮐﻠﯿﻪ ﺣﻘﻮق اﯾﻦ ﮐﺘﺎب اﻟﮑﺘﺮوﻧﯿﮏ ﻣﺘﻌﻠﻖ ﺑﻪ ﮔﺮوه دﯾﻨﺎﻣﯿﮏ ﺳﯿﺎﻻت ﻣﺤﺎﺳﺒﺎﺗﯽ داﻧﺸﮕﺎه ﺻﻨﻌﺘﯽ اﺻﻔﻬﺎن ﻣﯽﺑﺎﺷﺪ‬

‫ﻫﺮ ﮔﻮﻧﻪ ﭼﺎپ‪ ،‬ﺗﮑﺜﯿﺮ و اﺳﺘﻔﺎده از آن ﺑﺎ ذﮐﺮ ﻣﻨﺒﻊ ﺑﻼ ﻣﺎﻧﻊ اﺳﺖ‪.‬‬

‫‪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‬‬ ‫‪-‬‬ ‫ﺗﻌﺮﯾﻒ اﻋﺪاد اﻋﺸﺎري ﺑﺎ داﻣﻨﻪ ﻣﻮردﻧﻈﺮ‬

‫‪CHARACTER CHAR * 5‬‬ ‫ﺗﻌﺮﯾﻒ ﮐﺎراﮐﺘﺮ)ﮐﻪ ﻃﻮل ﮐﺎراﮐﺘﺮ ﺑﺎ ﺿﺮب اﻧﺪازه‬


‫‪CHARACTER :: CHAR * 5‬‬
‫ﻃﻮل در ﻧﺎم ﮐﺎراﮐﺘﺮ ﺗﻌﯿﯿﻦ ﻣﯽﺷﻮد‪(.‬‬
‫‪LOGICAL :: RIGHT‬‬ ‫‪LOGICAL RIGHT‬‬ ‫ﺗﻌﺮﯾﻒ ﻋﺒﺎرات ﻣﻨﻄﻘﯽ‬

‫دﺳﺘﻮر ‪: IMPLICIT NONE‬‬


‫اﯾﻦ دﺳﺘﻮر در اﺑﺘﺪاي ﻫﺮ ﺑﺮﻧﺎﻣﻪ ﯾﺎ زﯾﺮ ﺷﺎﺧﻪ ﻧﻮﺷﺘﻪ ﻣﯽﺷﻮد و ﺗﻌﯿﯿﻦ ﻧﻮع ﺿﻤﻨﯽ را ﺗﻮﺳﻂ ﮐﺎﻣﭙﺎﯾﻠﺮ ﻏﯿﺮﻓﻌﺎل ﻣﯽﮐﻨﺪ‪.‬‬
‫ﺑﺪﯾﻦ ﺗﺮﺗﯿﺐ ﺑﺎﯾﺪ ﻧﺎم ﻫﻤﻪ ﻣﺘﻐﯿﺮﻫﺎي ﯾﮏ ﺑﺮﻧﺎﻣﻪ را ﺗﻌﺮﯾﻒ ﻧﻤﻮد‪.‬‬
‫اﯾﻦ ﮐﺎر از ﺑﻪ وﺟﻮد آﻣﺪن ﺑﺮﺧﯽ اﺷﺘﺒﺎﻫﺎت در ﺣﯿﻦ ﮐﺪﻧﻮﯾﺴﯽ ﻣﺎﻧﻨﺪ ﻏﻠﻂ اﻣﻼﯾﯽ و‪ ...‬ﺟﻠﻮﮔﯿﺮي ﻣﯽﮐﻨﺪ‪.‬‬

‫ﺷﺮوع و ﭘﺎﯾﺎن ﯾﮏ ﺑﺮﻧﺎﻣﻪ‪:‬‬


‫ﺑﺮﻧﺎﻣﻪﻫﺎ در ﻓﺮﺗﺮن ﺑﻪ ﺻﻮرت ‪ Source File‬ﻓﺎﯾﻞﻫﺎي ﺑﺮآﻣﺪه از ﻣﻨﺒﻊ ﻣﯽﺑﺎﺷﺪ ﯾﻌﻨﯽ ﺑﺮاي ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﺗﻨﻬﺎ ﻣﯽﺗﻮان‬
‫ﺑﻪ ﻓﺮﻣﺖ ﺗﻌﯿﯿﻦ ﺷﺪه ﮐﺎﻣﭙﺎﯾﻠﺮ ﺑﺮﻧﺎﻣﻪ را ﻧﻮﺷﺖ‪ ،‬در ﻓﺮﺗﺮن ‪ 77‬ﺑﻪ ﻗﺒﻞ اﯾﻦ ﺷﮑﻞ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺣﺘﯽ در ﻧﻮﺷﺘﺎر ﺛﺎﺑﺖ )‬
‫‪ ( Fixed format‬ﺑﻮد ﺑﻪ ﻃﻮرﯾﮑﻪ در ﻧﻮﺷﺘﻦ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﻣﯽﺑﺎﯾﺴﺖ ‪ 6‬ﻓﻀﺎي اول ﻫﺮ ﺧﻂ را ﺑﺮاي ﻧﻮﺷﺘﻦ ﺷﻤﺎره دﺳﺘﻮر‬
‫ﺗﻮﺳﻂ ﮐﺎراﮐﺘﺮ ﻫﻔﺘﻢ ﺟﺪا ﻣﯽﺷﺪ اﻣﺎ در ﻓﺮﺗﺮن ‪ 90‬اﯾﻦ ﻗﯿﺪ ﻫﻢ ﺑﻪ دﻟﯿﻞ ﻣﺤﺪودﯾﺖ ﺗﺎﯾﭗ ﺣﺬف ﺷﺪ و ﺷﮑﻞ ﺑﺮﻧﺎﻣﻪ در‬
‫آن ﺑﻪ ﺻﻮرت ‪ Free format‬اراﺋﻪ ﺷﺪه اﺳﺖ‪.‬‬
‫‪PROGRAM‬‬ ‫ﻧﺎم ﺑﺮﻧﺎﻣﻪ)ﺑﺮاي ﻣﺜﺎل ‪( SOLVER‬‬

‫دﺳﺘﻮرات ﻓﺮﺗﺮن‬

‫‪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‬‬ ‫‪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‬‬

‫‪.le .‬‬ ‫=<‬ ‫ﮐﻮﭼﮑﺘﺮ ﯾﺎ ﻣﺴﺎوي ﺑﺎ‬


‫‪less equal‬‬

‫‪.gt .‬‬ ‫>‬


‫ﺑﺰرﮔﺘﺮ از‬
‫‪greater than‬‬

‫‪.ge .‬‬ ‫=>‬


‫ﺑﺰرﮔﺘﺮ ﯾﺎ ﻣﺴﺎوي ﺑﺎ‬
‫‪greater equal‬‬

‫‪.eq .‬‬ ‫==‬


‫ﻣﺴﺎوي ﺑﺎ‬
‫‪equal‬‬

‫‪.ne .‬‬ ‫=‪:‬‬


‫ﻣﺨﺎﻟﻒ ﺑﺎ‬
‫‪non equal‬‬
(‫) ﻣﻨﻄﻘﯽ‬:‫دﺳﺘﻮرات ﺷﺮﻃﯽ‬
: IF ‫دﺳﺘﻮر‬
‫ﻓﺮﻣﺖ ﮐﻠﯽ‬:
IF (log ic statement ) ‫دﺳﺘﻮرات ﻓﺮﺗﺮن‬
IF ( A > B ) A =A+B ‫ﺑﺮاي ﻣﺜﺎل‬
label : if (log ic statement ) then :‫ ﺑﻠﻮﮐﯽ‬IF ‫دﺳﺘﻮر‬

‫دﺳﺘﻮرات ﻓﺮﺗﺮن‬

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 if (nth 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

:CASE ‫دﺳﺘﻮر ﺷﺮﻃﯽ‬

label : select case (log ic statement )


case (first log ic state ) ‫ﺑﻠﻮك اول‬
‫دﺳﺘﻮرات ﻓﺮﺗﺮن‬
case (sec ond log ic state ) ‫ﺑﻠﻮك دوم‬
‫دﺳﺘﻮرات ﻓﺮﺗﺮن‬
case ( nth log ic state ) ‫ ام‬n ‫ﺑﻠﻮك‬
‫دﺳﺘﻮرات ﻓﺮﺗﺮن‬
case defualt ‫ﺑﻠﻮك آﺧﺮ‬
‫دﺳﺘﻮرات ﻓﺮﺗﺮن‬
end label case
century : select case ( year ) :‫ﺑﺮاي ﻣﺜﺎل‬
case (1800 :1900)
cent = 19th
case (1900 : 2000)
cent = 20th
case (2000 :)
cent = 21th
end case century

You might also like