Professional Documents
Culture Documents
Fortran
Fortran
ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺩﺭ ﺍﻏﻠﺐ ﮐﺘﺎﺑﻬﺎﯼ ﻣﮑﺎﻧﻴﮏ ﺩﻳﺪﻩ ﺍﻳﺪ ،ﺩﺭ ﺍﻏﻠﺐ ﺑﺮﻧﺎﻣﻪ ﻫﺎﯼ ﻣﻬﻨﺪﺳﯽ ﺍﺯ ﺍﻳﻦ ﺯﺑﺎﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮔﺮﺩﺩ .ﺯﺑﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ
ﻓﺮﺗﺮﻥ ﺑﺎ ﻭﺟﻮﺩ ﺳﺎﺩﮔﯽ ﺍﺯ ﻗﺪﺭﺕ ﻭ ﺳﺮﻋﺖ ﺑﺎﻻﻳﯽ ﺑﺮﺧﻮﺭﺩﺍﺭ ﺍﺳﺖ ،ﺑﻄﻮﺭﻳﮑﻪ ﻣﯽ ﺗﻮﺍﻥ ﺍﺯ ﺁﻥ ﺑﺮﺍﯼ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻫﺎﯼ CFDﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ .ﻓﺮﺗﺮﻥ
ﺍﻏﻠﺐ ﺑﺎ ﻗﺎﺑﻠﻴﺖ ﻓﻮﻕ ﺍﻟﻌﺎﺩﻩ ﺩﺭ ﻣﻮﺭﺩ ﺍﻋﺪﺍﺩ ﻣﻌﺮﻓﯽ ﻣﯽ ﮔﺮﺩﺩ ﻭ ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺍﺯ ﺍﺳﻤﺶ ) (FORmula TRANslationﭘﻴﺪﺍﺳﺖ ،ﺑﺮﺍﯼ ﺍﻧﺠﺎﻡ
ﻣﺤﺎﺳﺒﺎﺕ ﺭﻳﺎﺿﯽ ﺩﺭ ﮐﺎﺭﻫﺎﯼ ﻋﻠﻤﯽ ﺧﻠﻖ ﺷﺪﻩ ﺍﺳﺖ .ﺩﺭ ﮔﺬﺷﺘﻪ ﺍﻳﻦ ﺯﺑﺎﻥ ﺩﺍﺭﺍﯼ ﻣﺤﺪﻭﺩﻳﺘﻬﺎﻳﯽ ﺑﻮﺩﻩ ﮐﻪ ﺩﺭ ﻧﺴﺨﻪ ﻫﺎﯼ ﺟﺪﻳﺪ ﺍﻳﻦ ﻣﺸﮑﻼﺕ
ﺣﻞ ﺷﺪﻩ ﺍﺳﺖ ﻭ ﺍﻳﻦ ﺯﺑﺎﻥ ﺑﻪ ﻳﮏ ﺯﺑﺎﻥ ﺑﺴﻴﺎﺭ ﻗﻮﯼ ﺗﺒﺪﻳﻞ ﺷﺪﻩ ﺍﺳﺖ .ﺍﻏﻠﺐ ﮐﺘﺎﺑﺨﺎﻧﻪ ﻫﺎﯼ ﻻﺯﻡ ﺑﺮﺍﯼ ﺍﻧﺠﺎﻡ ﺍﻧﻮﺍﻉ ﻣﺤﺎﺳﺒﺎﺕ ﺩﺭ ﺍﻳﻦ ﺯﺑﺎﻥ ﻭﺟﻮﺩ
ﺩﺍﺭﺩ .ﺍﻳﻦ ﺯﺑﺎﻥ ﺩﺭ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﻓﺮﺗﺮﻥ 90ﺍﺯ ﻗﺎﺑﻠﻴﺖ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻫﺎﯼ ﻣﺤﺎﺳﺒﺎﺕ ﻣﻮﺍﺯﯼ ﺑﺮﺍﯼ ﮐﺎﻣﭙﻴﻮﺗﺮ ﻫﺎﯼ ﭼﻨﺪ ﭘﺮﺩﺍﺯﻧﺪﻩ ﺍﯼ ﭘﺸﺘﻴﺒﺎﻧﯽ ﻣﯽ
ﮐﻨﺪ ﮐﻪ ﺁﻳﻨﺪﻩ ﺭﻭﺷﻨﯽ ﺭﺍ ﺑﺮﺍﯼ ﻣﺤﺎﺳﺒﺎﺕ ﺳﻨﮕﻴﻦ CFDﻧﺸﺎﻥ ﻣﯽ ﺩﻫﺪ .ﺍﻳﻦ ﺯﺑﺎﻥ ﺟﺰﺀ ﺍﻭﻟﻴﻦ ﺯﺑﺎﻧﻬﺎﯼ ﺧﻠﻖ ﺷﺪﻩ ﺑﺮﺍﯼ ﮐﺎﻣﭙﻴﻮﺗﺮ ﻣﯽ ﺑﺎﺷﺪ ﮐﻪ ﺩﺭ
IBMﻧﻮﺷﺘﻪ ﺷﺪﻩ ﺍﺳﺖ .ﻗﺎﺑﻠﻴﺖ ﻣﺤﺎﺳﺒﺎﺕ ﺳﺮﻳﻊ ﺑﺎ ﺳﺎﺩﮔﯽ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺑﺎﻋﺚ ﻣﺤﺒﻮﺑﻴﺖ ﺁﻥ ﺑﻴﻦ ﻣﻬﻨﺪﺳﺎﻥ ﻭ ﺩﺍﻧﺸﻤﻨﺪﺍﻥ ﺷﺪﻩ ﺍﺳﺖ .ﺯﺑﺎﻥ
ﻓﺮﺗﺮﻥ ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﺩﺍﺭﺍﯼ ﻗﺎﺑﻠﻴﺖ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺷﻲﺀ ﮔﺮﺍ ﺷﺪﻩ ﺍﺳﺖ.
ﻣﻌﻤﻮ ﹰﻻ ﺍﺯ ﻓﺮﺗﺮﻥ 77ﻭ 90ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮔﺮﺩﺩ ﮐﻪ ﻧﺴﺨﻪ 90ﺁﻥ ﻣﺤﺒﻮﺑﻴﺖ ﻋﻤﻮﻣﯽ ﺗﺮﯼ ﺩﺍﺭﺩ .ﺩﺭ ﺍﻳﻦ ﻣﺘﻦ ﺍﺯ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﻫﺎﯼ ﺑﺮﻧﺎﻣﻪ
ﻧﻮﻳﺴﯽ ﻓﺮﺗﺮﻥ 90ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﺩﺭ ﻣﻮﺍﺭﺩ ﻻﺯﻡ ﺩﺭ ﻣﻮﺭﺩ ﻓﺮﺗﺮﻥ 77ﻫﻢ ﺑﺤﺚ ﺧﻮﺍﻫﻴﻢ ﮐﺮﺩ.
ﺗﺎﺭﻳﺨﭽﻪ ][2
ﭼﺮﺍ ﻓﺮﺗﺮﻥ؟
ﺯﺑﺎﻥ ﺍﺻﻠﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺩﺭ ﮐﺎﺭﺑﺮﺩﻫﺎﯼ ﻋﻠﻤﯽ ﻓﺮﺗﺮﻥ ﺍﺳﺖ .ﺍﻏﻠﺐ ﮐﺪﻫﺎﯼ ﻗﺪﻳﻤﯽ ﺑﺎ ﺍﻳﻦ ﺯﺑﺎﻥ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﺍﺳﺖ .ﺑﻨﺎﺑﺮﺍﻳﻦ ﻻﺯﻡ ﺍﺳﺖ ﮐﻪ ﻳﮏ
ﺩﺍﻧﺸﺠﻮﯼ ﻣﻬﻨﺪﺳﯽ ﺑﺎ ﺍﻳﻦ ﺯﺑﺎﻥ ﺁﺷﻨﺎﻳﯽ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺳﺎﻟﻬﺎ ﭘﻴﺶ ﺑﻪ ﻧﻈﺮ ﻣﯽ ﺭﺳﻴﺪ ﮐﻪ ﺑﺎ ﭘﻴﺸﺮﻓﺖ ﻭ ﻣﺤﺒﻮﺑﻴﺖ ﻋﻤﻮﻣﯽ ﺯﺑﺎﻧﻬﺎﻳﯽ ﻣﺎﻧﻨﺪ Cﺯﺑﺎﻥ
ﻓﺮﺗﺮﻥ ﻣﻨﺴﻮﺥ ﮔﺮﺩﺩ ،ﺍﻣﺎ ﺑﺎ ﮔﺬﺷﺖ ﺳﺎﻟﻬﺎ ﺍﻳﻦ ﺯﺑﺎﻥ ﻫﻤﭽﻨﺎﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻓﺮﺍﻭﺍﻥ ﺩﺍﺭﺩ .ﺍﻳﻦ ﻣﺎﻧﺪﮔﺎﺭﯼ ﻣﺪﻳﻮﻥ ﮐﺘﺎﺑﺨﺎﻧﻪ ﻫﺎ ﻭ ﮐﺪﻫﺎﯼ 40ﺳﺎﻟﻪ ﺍﻳﻦ
ﺯﺑﺎﻥ ﺍﺳﺖ .ﺩﺭ ﻫﺮ ﺣﺎﻝ ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻫﺎﯼ ﺟﺪﻳﺪ ﺍﻳﻦ ﺯﺑﺎﻥ ﻗﺪﺭﺕ ﺯﻳﺎﺩﯼ ﺑﻪ ﺍﻳﻦ ﺯﺑﺎﻥ ﺩﺍﺩﻩ ﺍﺳﺖ .ﺍﻳﻦ ﺯﺑﺎﻥ ﻫﻤﭽﻨﺎﻥ ﺑﻌﻨﻮﺍﻥ ﻣﻬﻤﺘﺮﻳﻦ ﺯﺑﺎﻥ ﺑﺮﺍﯼ
ﻣﻬﻨﺪﺳﺎﻥ ﻭ ﺩﺍﻧﺸﻤﻨﺪﺍﻥ ﺑﺸﻤﺎﺭ ﻣﯽ ﺁﻳﺪ .ﻓﺮﺗﺮﻥ ﺑﺮﺍﯼ ﺍﻧﺠﺎﻡ ﻣﺤﺎﺳﺒﺎﺕ ﺭﻳﺎﺿﯽ ﺑﺎ ﺳﺮﻋﺖ ﻭ ﻗﺎﺑﻠﻴﺖ ﺑﺎﻻ ﻃﺮﺍﺣﯽ ﺷﺪﻩ ﺍﺳﺖ .ﺍﻟﺒﺘﻪ ﺯﺑﺎﻥ ﻓﺮﺗﺮﻥ
ﻫﻨﻮﺯ ﺩﺭ ﺍﻳﺠﺎﺩ ﻣﺤﻴﻂ ﮔﺮﺍﻓﻴﮑﯽ ﮐﻤﺒﻮﺩ ﺩﺍﺭﺩ ﻭ ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﺪ ﺑﺮﺍﯼ ﻓﺮﺗﺮﻥ ﻳﮏ ﺭﺍﺑﻂ ﮔﺮﺍﻓﻴﮑﯽ ﮐﺎﺭﺑﺮ) (Graphical User Interfaceﺑﻨﻮﻳﺴﻴﺪ،
ﺑﺎﻳﺪ ﺧﻮﺩ ﺭﺍ ﺩﺭﮔﻴﺮ ﻓﺮﺍﺧﻮﺍﻧﯽ ﺗﻮﺍﺑﻊ ﻭﻳﻨﺪﻭﺯ) APIﻫﺎ!( ﮐﻨﻴﺪ .ﺍﻧﺘﺨﺎﺏ ﺭﺍﺣﺖ ﺗﺮ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻳﮏ ﺯﺑﺎﻥ ﺳﺎﺩﻩ ﻣﺎﻧﻨﺪ Visual Basicﻳﺎ Delphiﺑﺮﺍﯼ
ﺍﻳﺠﺎﺩ ﺭﺍﺑﻂ ﮔﺮﺍﻓﻴﮑﯽ ﮐﺎﺭﺑﺮ ﺍﺳﺖ .ﺩﺭ ﺍﻳﻦ ﺭﻭﺵ GUIﺭﺍ ﺩﺭ ﺍﻳﻦ ﺯﺑﺎﻧﻬﺎ ﻣﯽ ﺳﺎﺯﻳﻢ ﻭ ﻣﻮﺗﻮﺭ ﺍﺻﻠﯽ ﺑﺮﻧﺎﻣﻪ ﺑﺮﺍﯼ ﮐﺎﺭ ﺑﺎ ﻣﻌﺎﺩﻻﺕ ﻭ ﺍﻧﺠﺎﻡ ﻣﺤﺎﺳﺒﺎﺕ
ﺭﺍ ﺩﺭ FORTRANﻣﯽ ﻧﻮﻳﺴﻴﻢ ﻭ ﺑﻌﺪ ﺁﻧﺮﺍ ﺑﺎ ﻓﺮﻣﺖ (Dynamic Link Library) DLLﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺑﺮﻧﺎﻣﻪ ﻗﺮﺍﺭ ﻣﯽ ﺩﻫﻴﻢ .ﺍﻳﻨﮑﺎﺭ ﺭﺍ ﺩﺭ ﻣﺮﺍﺣﻞ
ﺑﺮﻧﺎﻣﻪ Ansysﮐﻪ ﺑﻴﻦ ﻣﻬﻨﺪﺳﺎﻥ ﻣﮑﺎﻧﻴﮏ ﻣﺤﺒﻮﺑﻴﺖ ﺩﺍﺭﺩ ﺑﺎ ﺯﺑﺎﻥ ﻓﺮﺗﺮﻥ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﺍﺳﺖ.
ﻓﺮﺗﺮﻥ 90
ﻓﺮﺗﺮﻥ 90ﻓﺮﺍﺗﺮ ﺍﺯ ﻳﮏ ﻭﻳﺮﺍﻳﺶ ﺟﺪﻳﺪ ﺍﺯ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﻓﺮﺗﺮﻥ ﻣﯽ ﺑﺎﺷﺪ ﻭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺭﺍ ﺑﺴﻴﺎﺭ ﺁﺳﺎﻧﺘﺮ ﮐﺮﺩﻩ ﺍﺳﺖ .ﺍﻳﻦ ﻭﻳﺮﺍﻳﺶ ﮐﺪﻫﺎﯼ ﻓﺮﺗﺮﻥ
77ﺭﺍ ﻧﻴﺰ ﭘﺸﺘﻴﺒﺎﻧﯽ ﻣﯽ ﮐﻨﺪ .ﻓﺮﺗﺮﻥ 90ﻳﮏ ﺯﺑﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺍﻧﻌﻄﺎﻑ ﭘﺬﻳﺮ ﻭ ﻗﻮﯼ ﺍﺳﺖ ,ﺍﻳﻦ ﺯﺑﺎﻥ ﺍﻣﮑﺎﻧﺎﺕ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺷﻲﺀ ﮔﺮﺍ ﺭﺍ
ﺩﺍﺭﺍﺳﺖ .ﺍﻣﮑﺎﻧﺎﺕ ﺩﺳﺘﺮﺳﯽ ﺑﻪ ﺍﻣﮑﺎﻧﺎﺕ ﺳﻴﺴﺘﻤﯽ ﻣﺎﻧﻨﺪ ﺗﺨﺼﻴﺺ ﺣﺎﻓﻈﻪ ,ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﺷﺎﺭﻩ ﮔﺮﻫﺎ ﻭ ﺑﺴﻴﺎﺭﯼ ﺍﻣﮑﺎﻧﺎﺕ ﺩﻳﮕﺮ ﺑﻪ ﺁﻥ ﺍﺿﺎﻓﻪ ﺷﺪﻩ
ﺍﺳﺖ؛ ﺑﻌﺒﺎﺭﺕ ﺩﻳﮕﺮ ﻓﺮﺗﺮﻥ 90ﺑﻴﺸﺘﺮ ﺷﺒﻴﻪ ﺑﻪ C++ﺍﺳﺖ ﺗﺎ ﻓﺮﺗﺮﻥ !77ﺍﺭﺗﻘﺎﺀ ﻗﺎﺑﻠﻴﺘﻬﺎﯼ ﻋﺪﺩﯼ ,ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺣﺎﻟﺖ ﻣﻮﺍﺯﯼ )ﭼﻨﺪ
ﭘﺮﺩﺍﺯﻧﺪﻩ ﺍﯼ( ﮐﻪ ﻳﮏ ﭘﻴﺸﺮﻓﺖ ﺷﺎﻳﺎﻥ ﺫﮐﺮ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﻋﻠﻤﯽ ﻭ ﻧﻮﺷﺘﻦ ﮐﺪﻫﺎﯼ ﻣﻮﺍﺯﯼ ﻣﯽ ﺑﺎﺷﺪ .ﺍﻳﻦ ﺭﻭﻧﺪ ﺩﺭ ﻓﺮﺗﺮﻥ 95ﺩﻧﺒﺎﻝ ﺷﺪﻩ
ﺍﺳﺖ ﻭ ﺍﻧﺘﻈﺎﺭ ﻣﯽ ﺭﻭﺩ ﺩﺭ ﻭﻳﺮﺍﻳﺶ ﻫﺎﯼ ﺟﺪﻳﺪﺗﺮ ﺍﻳﻦ ﺯﺑﺎﻥ ﺍﻣﮑﺎﻧﺎﺕ ﮔﺴﺘﺮﺩﻩ ﺗﺮﯼ ﺑﺮﺍﯼ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﻋﻠﻤﯽ ﺑﻪ ﺍﻳﻦ ﺯﺑﺎﻥ ﺍﺿﺎﻓﻪ ﮔﺮﺩﺩ.
ﺩﺭ ﺍﻳﻦ ﺑﺨﺶ ﺍﻃﻼﻋﺎﺕ ﻻﺯﻡ ﺟﻬﺖ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﻣﺤﻴﻂ Visual Fortranﺍﺭﺍﺋﻪ ﺷﺪﻩ ﺍﺳﺖ .ﻣﺤﻴﻂ Visual Fortranﻫﻤﺎﻥ ﻣﺤﻴﻂ
ﻼ ﺗﺠﺮﺑﻪ ﮐﺎﺭ ﺑﺎ ﺍﻳﻦ ﻣﺤﻴﻂ ﺭﺍ ﺩﺍﺭﻳﺪ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﻣﻄﺎﻟﺐ ﺭﺍ ﺍﺯ ﺑﺨﺶ ﺑﻌﺪﯼ ﺍﺩﺍﻣﻪ ﺩﻫﻴﺪ.
Microsoft Visual Studioﺍﺳﺖ .ﺍﮔﺮ ﻗﺒ ﹰ
ﺑﺮﺍﯼ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻓﺮﺗﺮﻥ ﺍﺑﺘﺪﺍ ﻳﮏ ﭘﺮﻭﮊﻩ ﻣﯽ ﺳﺎﺯﻳﻢ .ﻣﺮﺍﺣﻞ ﺯﻳﺮ ﺭﺍ ﺩﻧﺒﺎﻝ ﮐﻨﻴﺪ .ﺳﺎﺩﻩ ﺗﺮﻳﻦ ﺭﺍﻩ ﺑﺮﺍﯼ ﺍﻳﻦ ﮐﺎﺭ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﻨﻮﯼ ﻓﺎﻳﻞ ﺍﺳﺖ .ﺍﺯ
ﺍﺯ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩ ،ﺑﺮﮔﻪ Projectsﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﺪ .ﺩﺭ ﺍﻳﻦ ﺑﺮﮔﻪ ﺁﻳﮑﻮﻥ ) Fortran Consol Application ,(Iconﺭﺍ ﺍﻧﺘﺨﺎﺏ
ﮐﻨﻴﺪ .ﻓﺮﺍﻣﻮﺵ ﻧﮑﻨﻴﺪ ﺑﺮﺍﯼ ﭘﺮﻭﮊﻩ ﺩﺭ ﻗﺴﻤﺖ ،Project Nameﻳﮏ ﻧﺎﻡ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﺪ.
ﺭﻭﯼ OKﮐﻠﻴﮏ ﮐﻨﻴﺪ .ﺻﻔﺤﻪ ﺍﯼ ﮐﻪ ﻧﻮﻉ ﭘﺮﻭﮊﻩ ﺭﺍ ﺍﺯ ﺷﻤﺎ ﻣﯽ ﭘﺮﺳﺪ ،ﻇﺎﻫﺮ ﻣﯽ ﮔﺮﺩﺩ؛ ﺭﻭﯼ Finishﮐﻠﻴﮏ ﮐﻨﻴﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺍﻳﺠﺎﺩ ﺷﻮﺩ.
ﺻﻔﺤﻪ ﺍﯼ ﺷﺎﻣﻞ ﺍﻃﻼﻋﺎﺕ ﭘﺮﻭﮊﻩ ﺷﻤﺎ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺧﻮﺍﻫﺪ ﺷﺪ؛ ﺭﻭﯼ OKﮐﻠﻴﮏ ﮐﻨﻴﺪ .ﭘﺮﻭﮊﻩ ﺷﻤﺎ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺍﺳﺖ .ﺍﻣﺎ ﺍﻳﻦ ﭘﺮﻭﮊﻩ ﺧﺎﻟﯽ ﺍﺳﺖ.
ﺑﺮﺍﯼ ﺍﺿﺎﻓﻪ ﮐﺮﺩﻥ ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ ﻓﺮﺗﺮﻥ ﺑﻪ ﺍﻳﻦ ﭘﺮﻭﮊﻩ ﺩﻭﺑﺎﺭﻩ ﺍﺯ ﻣﻨﻮﯼ ﺍﺻﻠﯽ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﻢ.
ﺑﺮﮔﻪ Filesﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﺪ .ﺩﺭ ﺍﻳﻦ ﺑﺮﮔﻪ ﺁﻳﮑﻮﻥ Fortran Free Format Source Fileﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﺪ )ﺍﻳﻦ ﻗﺎﻟﺐ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﻓﺮﺗﺮﻥ 90
ﻣﯽ ﺑﺎﺷﺪ( .ﻓﺮﺍﻣﻮﺵ ﻧﮑﻨﻴﺪ ﺑﺮﺍﯼ ﺍﻳﻦ ﻓﺎﻳﻞ ﺩﺭ ﻗﺴﻤﺖ ،File Nameﻳﮏ ﻧﺎﻡ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﺪ .ﺗﺎ ﺣﺪ ﻣﻤﮑﻦ ﻧﺎﻡ ﻓﺎﻳﻠﻬﺎ ﺭﺍ ﺑﺎ ﺩﻗﺖ ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﺪ ﺗﺎ
ﺩﺭ ﺁﻳﻨﺪﻩ ﺑﺎ ﺧﻮﺍﻧﺪﻥ ﻧﺎﻡ ﻓﺎﻳﻞ ﺑﺘﻮﺍﻧﻴﺪ ﺑﻪ ﻣﺤﺘﻮﺍﯼ ﺁﻥ ﭘﯽ ﺑﺒﺮﻳﺪ .ﻫﻤﭽﻨﻴﻦ ﺗﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ ﭼﮏ ﺑﺎﮐﺲ Add to projectﺗﻴﮏ ﺧﻮﺭﺩﻩ ﺑﺎﺷﺪ.
ﻓﺎﻳﻞ ﺑﻨﻮﻳﺴﻴﺪ.
PROGRAM hello_fortran
CHARACTER::A
READ(*,*) A
ﺑﺮﺍﯼ ﺍﺟﺮﺍﯼ ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺍﺑﺘﺪﺍ ﺁﻧﺮﺍ ﺗﺮﺟﻤﻪ ) (Compileﻣﯽ ﮐﻨﻴﻢ .ﺑﺮﺍﯼ ﺍﻳﻨﮑﺎﺭ ﺍﺯ ﻣﻨﻮ ﺍﺻﻠﯽ Build > Build Hello.exeﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ ﻳﺎ
ﮐﻠﻴﺪ F7ﺭﺍ ﻣﯽ ﺯﻧﻴﻢ .ﺍﮔﺮ ﺧﻄﺎﻳﯽ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺗﻌﺪﺍﺩ ﻭ ﻣﻨﺒﻊ ﺧﻄﺎ ﺩﺭ ﭘﻨﺠﺮﻩ ﺯﻳﺮﻳﻦ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺧﻮﺍﻫﺪ ﺷﺪ .ﺑﺎ ﺩﺍﺑﻞ-ﮐﻠﻴﮏ
ﺭﻭﯼ ﺧﻄﺎ ،ﻣﻨﺒﻊ ﺧﻄﺎ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺧﻮﺍﻫﺪ ﺷﺪ .ﺍﮔﺮ ﺧﻄﺎﻳﯽ ﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺑﺮﻧﺎﻣﻪ ﺗﺮﺟﻤﻪ ﺷﺪﻩ ﻭ ﻓﺎﻳﻞ ﺍﺟﺮﺍﻳﯽ hello.exe
ﺳﺎﺧﺘﻪ ﻣﯽ ﺷﻮﺩ .ﻭ ﺩﺭ ﭘﻨﺠﺮﻩ ﻭﺿﻌﻴﺖ ﭘﻴﺎﻣﯽ ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﯽ ﺷﻮﺩ.
ﺑﺮﺍﯼ ﺍﺟﺮﺍﯼ ﺑﺮﻧﺎﻣﻪ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺑﻪ ﻣﺤﻞ ﺫﺧﻴﺮﻩ ﺑﺮﻧﺎﻣﻪ ﺭﻓﺘﻪ ﺩﺭ ﭘﻮﺷﻪ Debugﺑﺮﻧﺎﻣﻪ ﺍﺟﺮﺍﻳﯽ ﺭﺍ ﻳﺎﻓﺘﻪ ﻭ ﺍﺟﺮﺍ ﮐﻨﻴﺪ ﻳﺎ ﮐﻠﻴﺪ F5ﺭﺍ ﺑﺰﻧﻴﺪ .ﻳﺎ ﺍﺯ
ﺁﻳﮑﻮﻥ goﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ )ﺍﻳﻦ ﺁﻳﮑﻮﻥ ﺷﺒﻴﻪ ﻳﮏ ﺑﺮﮎ ﮐﺎﻏﺬ ﺍﺳﺖ ﮐﻪ ﺩﺭ ﺳﻤﺖ ﺭﺍﺳﺖ ﺁﻥ ﻳﮏ ﻓﻠﺶ ﺭﻭ ﺑﻪ ﭘﺎﻳﻴﻦ ﻭﺟﻮﺩ ﺩﺍﺭﺩ(.
ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻫﺎﯼ ﮐﺪ ﻧﻮﻳﺴﯽ
ﺑﺮﺍﯼ ﺳﺎﺯﮔﺎﺭﯼ ﻭ ﺧﻮﺍﻧﺎﻳﯽ ﺑﻴﺸﺘﺮ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺑﻬﺘﺮ ﺍﺳﺖ ﮐﻪ ﻗﻮﺍﻧﻴﻦ ﺯﻳﺮ ﺭﺍ ﺭﻋﺎﻳﺖ ﮐﻨﻴﺪ.
-1ﻫﻤﺔ ﮐﻠﻤﺎﺕ ﮐﻠﻴﺪﯼ ﺍﻳﻦ ﺯﺑﺎﻥ ﺭﺍ ﺑﺎ ﺣﺮﻭﻑ ﺑﺰﺭﮒ ﻭ ﻫﻤﻪ ﭼﻴﺰ ﺩﻳﮕﺮ ﺭﺍ ﺑﺎ ﺣﺮﻭﻑ ﮐﻮﭼﮏ ﺑﻨﻮﻳﺴﻴﺪ )ﺍﻳﻦ ﺯﺑﺎﻥ ﺑﻴﻦ ﺣﺮﻭﻑ ﮐﻮﭼﮏ ﻭ
ﺑﺰﺭﮒ ﻓﺮﻗﯽ ﻧﻤﯽ ﺩﺍﻧﺪ!( .ﺍﻟﺒﺘﻪ ﺍﻳﻦ ﺳﺎﺧﺘﺎﺭ ﺁﻧﭽﻨﺎﻥ ﻣﻨﺎﺳﺐ ﻧﻤﯽ ﺑﺎﺷﺪ ﻭ ﻣﯽ ﺗﻮﺍﻧﺪ ﺧﻮﺍﻧﺎﻳﯽ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﮐﺎﻫﺶ ﺩﻫﺪ ﻭ ﺩﻟﻴﻞ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ
ﺁﻥ ﻗﺪﻣﺖ ﺍﻳﻦ ﺭﻭﺵ ﺍﺳﺖ .ﺩﺭ ﻫﺮ ﺣﺎﻝ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺭﻭﺵ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﻣﺪﺭﻥ ﮐﺎﺭ ﺩﺭﺳﺘﯽ ﻧﻴﺴﺖ.
-2ﺍﺯ ﺩﻧﺪﺍﻧﻪ ﺩﺍﺭ ﮐﺮﺩﻥ ﺩﺭ ﻣﺘﻦ ﺍﺻﻠﯽ ﺑﺮﻧﺎﻣﻪ ﻭ ﻫﻤﭽﻨﻴﻦ ﺑﻠﻮﮐﻬﺎﯼ ﺩﻳﮕﺮ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ.
-3ﺍﺳﻢ ﺑﺮﻧﺎﻣﻪ ﻫﺎ ،ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﻭ ﺗﻮﺍﺑﻊ ﺭﺍ ﺩﺭ ﺍﻧﺘﻬﺎﯼ ﺁﻧﻬﺎ ﺫﮐﺮ ﮐﻨﻴﺪ.
ﺳﺎﺧﺘﺎﺭ ﺑﺮﻧﺎﻣﻪ ﻓﺮﺗﺮﻥ
ﺳﺎﺧﺘﺎﺭ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﻓﺮﺗﺮﻥ 90ﺑﻪ ﺳﺎﺧﺘﺎﺭ ﺯﺑﺎﻧﻬﺎﯼ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺩﻳﮕﺮ ﺷﺒﺎﻫﺖ ﺯﻳﺎﺩﯼ ﺩﺍﺭﺩ ﻭ ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﺍﺳﺖ.
PROGRAM program_name
Program body
ﻣﺜﺎﻝ ﺳﺎﺩﻩ ﺍﯼ ﺍﺯ ﺍﻳﻦ ﺳﺎﺧﺘﺎﺭ ﺭﺍ ﺩﺭ ﺑﺨﺶ ﻗﺒﻠﯽ ﺩﻳﺪﻩ ﺍﻳﺪ .ﺳﺎﺧﺘﺎﺭ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﻓﺮﺗﺮﻥ 77ﮐﻤﯽ ﻣﺘﻔﺎﻭﺕ ﻭ ﭘﻴﭽﻴﺪﻩ ﺗﺮ ﺍﺳﺖ! ﺩﺭ ﻓﺮﺗﺮﻥ ،77ﮐﻞ
ﺻﻔﺤﻪ ﺑﻪ ﺳﺘﻮﻧﻬﺎﻳﯽ ﺗﻘﺴﻴﻢ ﻣﯽ ﮔﺮﺩﺩ ﻭ ﻫﺮ ﺑﺨﺶ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻣﺤﻞ ﻣﺸﺨﺼﯽ ﺩﺍﺭﺩ .ﺑﺮﻧﺎﻣﻪ ﻓﺮﺗﺮﻥ 77ﺑﺎﻳﺪ ﺍﺯ ﻗﻮﺍﻧﻴﻦ ﺯﻳﺮ ﭘﻴﺮﻭﯼ ﮐﻨﺪ:
ﺗﻤﺎﻡ ﺩﺳﺘﻮﺭﺍﺕ ﻓﺮﺗﺮﻥ ﺑﺎﻳﺪ ﺑﻴﻦ ﺳﺘﻮﻥ 7ﺗﺎ 72ﺍﺯ ﻓﺎﻳﻞ ﻗﺮﺍﺭ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
ﻓﺎﺻﻠﻪ ﺧﺎﻟﯽ ﺑﺮﺍﯼ ﻣﺘﺮﺟﻢ ﺑﺮﻧﺎﻣﻪ ﻣﻌﻨﺎﻳﯽ ﻧﺪﺍﺭﺩ ﻭﻟﯽ ﺑﺮﺍﯼ ﺧﻮﺍﻧﺎﻳﯽ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺪ ﺍﺯ ﺁﻧﻬﺎ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ!
ﺩﺳﺘﻮﺭﺍﺗﯽ ﮐﻪ ﺩﺭ ﺳﺘﻮﻥ 1ﺗﺎ 5ﺁﻧﻬﺎ ﺧﺎﻟﯽ ﺍﺳﺖ ﺍﻣﺎ ﺩﺭ ﺳﺘﻮﻥ 6ﮐﺎﺭﺍﮐﺘﺮﯼ ﻏﻴﺮ ﺍﺯ ﺻﻔﺮ ﻗﺮﺍﺭ ﺩﺍﺭﺩ ﺑﻪ ﻋﻨﻮﺍﻥ ﺍﺩﺍﻣﻪ
ﺷﻤﺎﺭﻩ ﺧﻂ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﻳﺪ ﺑﻴﻦ ﺳﺘﻮﻥ 1ﺗﺎ 5ﻧﻮﺷﺘﻪ ﺷﻮﻧﺪ ﻭ ﺣﺪﺍﮐﺜﺮ ﻣﯽ ﺗﻮﺍﻧﺪ ﻳﮏ ﻋﺪﺩ 5ﺭﻗﻤﯽ ﺑﺎﺷﺪ )ﻓﺮﺗﺮﻥ ﺑﻪ
ﺷﻤﺎﺭﻩ ﺧﻂ ﻧﻴﺎﺯﯼ ﻧﺪﺍﺭﺩ ﻭ ﻓﻘﻂ ﺑﺮﺍﯼ ﺍﺭﺟﺎﻉ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺗﯽ ﻣﺎﻧﻨﺪ GOTOﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮔﺮﺩﺩ.
ﺧﻮﺏ ﺍﺳﺖ ﮐﻪ ﺣﺪﺍﮐﺜﺮ ﺑﺎ ﺩﻭ ﺩﻧﺪﺍﻧﻪ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺑﺨﺸﻬﺎﯼ ﻣﺨﺘﻠﻒ ﺭﺍ ﻣﺸﺨﺺ ﮐﻨﻴﺪ.
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻮﺿﻴﺤﺎﺕ ﺑﺎﻻ ﺳﺎﺧﺘﺎﺭ ﺑﺮﻧﺎﻣﻪ ﻓﺮﺗﺮﻥ 77ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﺍﺳﺖ.
PROGRAM program_name
Body of program
ﻣﯽ ﺗﻮﺍﻥ ﻣﺜﺎﻝ ﻗﺒﻞ ﺭﺍ ﺑﺮﺍﯼ ﻓﺮﺗﺮﻥ 77ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﻧﻮﺷﺖ:
PROGRAM hello_fortran
C This is comment in fortran file
CHARACTER::A
READ(*,*) A
ﻣﺘﻐﻴﺮﻫﺎ
ﭘﻴﺸﻨﻬﺎﺩ ﻣﯽ ﮔﺮﺩﺩ ﮐﻪ ﻫﻤﺔ ﻣﺘﻐﻴﺮﻫﺎﯼ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﺍﺑﺘﺪﺍﯼ ﺑﺮﻧﺎﻣﻪ ﺗﻌﺮﻳﻒ )ﺗﻌﻴﻴﻦ ﻧﻮﻉ( ﮔﺮﺩﻧﺪ .ﺑﺮﺍﯼ ﺍﻳﻨﮑﻪ ﻫﻴﭻ ﻣﺘﻐﻴﺮﯼ ﺍﺯ ﻗﻠﻢ ﻧﻴﻔﺘﺪ ،ﺍﺯ ﺩﺳﺘﻮﺭ
IMPLICIT NONEﺩﺭ ﺍﺑﺘﺪﺍﯼ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ .ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﻪ ﻣﺘﺮﺟﻢ ﺑﺮﻧﺎﻣﻪ ﺧﻮﺍﻫﺪ ﮔﻔﺖ ﮐﻪ ﺍﮔﺮ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻣﺘﻐﻴﺮ ﺗﻌﺮﻳﻒ ﻧﺸﺪﻩ ﺍﯼ
ﺑﺮﺧﻮﺭﺩ ،ﺍﻋﻼﻡ ﺧﻄﺎ ﮐﻨﺪ .ﺍﻟﺒﺘﻪ ﻓﺮﺗﺮﻥ ﺑﻪ ﺗﻌﻴﻴﻦ ﻧﻮﻉ ﻧﻴﺎﺯﯼ ﻧﺪﺍﺭﺩ! ﺍﻣﺎ ﺍﻳﻦ ﮐﺎﺭ ﺧﻄﺎﻫﺎﯼ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺷﻤﺎ ﺭﺍ ﮐﺎﻫﺶ ﺧﻮﺍﻧﺪ ﺩﺍﺩ .ﺯﺑﺎﻧﻬﺎﯼ ﺑﺮﻧﺎﻣﻪ
ﻧﻮﻳﺴﯽ ﺯﻳﺎﺩﯼ ﺩﺭ ﺍﻭﻟﻴﻦ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﺘﻐﻴﺮ ﺑﺮﺍﯼ ﺁﻥ ﻣﺘﻐﻴﺮ ﻧﻮﻋﯽ ﺩﺭ ﻧﻈﺮ ﻣﯽ ﮔﻴﺮﻧﺪ ﻭ ﻧﻴﺎﺯﯼ ﻧﻴﺴﺖ ﮐﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ ﻧﻮﻉ ﻣﺘﻐﻴﺮﻫﺎ ﺭﺍ ﻣﺸﺨﺺ
ﮐﻨﺪ ﺯﺑﺎﻥ ﻓﺮﺗﺮﻥ ﻧﻴﺰ ﭼﻨﻴﻦ ﺍﺳﺖ .ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ ﻳﺎ ﻣﺘﺮﺟﻢ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺣﺮﻓﻪ ﺍﯼ ﺑﺮﺍﯼ ﻣﺪﺕ ﺯﻳﺎﺩﯼ ﻣﻮﺭﺩ ﺑﺤﺚ
ﺑﻮﺩ ﺗﺎ ﺍﻳﻨﮑﻪ ﻧﺎﺳﺎ ﻳﮑﯽ ﺍﺯ ﺳﻨﺴﻮﺭﻫﺎﯼ ﺳﻔﻴﻨﻪ ﻓﻀﺎﻳﯽ ﻭﻧﻮﺱ ﺭﺍ ﺑﻌﻠﺖ ﻳﮏ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺍﺷﺘﺒﺎﻩ ﺗﻮﺳﻂ ﻣﺘﺮﺟﻢ ﺑﺮﻧﺎﻣﻪ )ﻣﺘﺮﺟﻢ ﻧﻮﻉ ﺩﻳﮕﺮﯼ ﺭﺍ
ﺑﺮﺍﯼ ﻣﺘﻐﻴﺮ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺑﻮﺩ( ﺍﺯ ﺩﺳﺖ ﺩﺍﺩ .ﺑﻨﺎﺑﺮﺍﻳﻦ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ ﺑﻌﻨﻮﺍﻥ ﻳﮏ ﺭﻭﺵ ﻣﻨﺎﺳﺐ ﺍﻧﺘﺨﺎﺏ ﺷﺪ .ﺧﻮﺷﺒﺨﺘﺎﻧﻪ ﺩﺭ
ﺑﺴﻴﺎﺭﯼ ﺍﺯ ﺯﺑﺎﻧﻬﺎﯼ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﻣﺪﺭﻥ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ ﺍﺟﺒﺎﺭﯼ ﺍﺳﺖ .ﻓﺮﺗﺮﻥ ﺑﺮﺍﯼ ﺩﺍﺷﺘﻦ ﺳﺎﺯﮔﺎﺭﯼ ﺍﺯ ﺗﻌﺮﻳﻒ ﺩﺍﺧﻠﯽ
ﻓﻘﻂ ﺍﻣﮑﺎﻥ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺣﺮﻭﻑ ﮐﻮﭼﮏ ﻭ ﺑﺰﺭﮒ ﺍﻧﮕﻠﻴﺴﯽ ) ،(A...Z, a...zﺍﻋﺪﺍﺩ) (0,1,..,9ﻭ ﮐﺎﺭﺍﮐﺘﺮ ﺯﻳﺮ-ﺧﻂ ) _ (
ﻭﺟﻮﺩ ﺩﺍﺭﺩ.
ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﮐﻪ ﺑﺰﺭﮔﯽ ﻳﺎ ﮐﻮﭼﮑﯽ ﺣﺮﻭﻑ ﺑﺮﺍﯼ ﻓﺮﺗﺮﻥ ﻓﺮﻗﯽ ﻧﺪﺍﺭﺩ.
ﺍﺳﺖ:
ﻧﻮﻉ DOUBLEﺑﺮﺍﯼ ﺍﻋﺪﺍﺩ ﺍﻋﺸﺎﺭﯼ ﺑﺎ ﺩﻗﺖ ﺑﻴﺸﺘﺮ )ﺗﻘﺮﻳﺒﺎﹰ 16ﺭﻗﻢ ﻣﻌﻨﯽ ﺩﺍﺭ( ]ﺍﻳﻦ ﺍﻋﺪﺍﺩ ﺭﺍ ﻣﻀﺎﻋﻒ ﻣﯽ ﻧﺎﻣﻴﻢ[
ﻧﻮﻉ COMPLEXﺑﺮﺍﯼ ﺍﻋﺪﺍﺩ ﻣﺨﺘﻠﻂ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﮏ ﺟﻔﺖ ﺑﺎ ﺩﻗﺖ ،REALﺍﻏﻠﺐ ﺗﻮﺍﺑﻊ ﻓﺮﺗﺮﻥ 77ﺑﺮ ﺭﻭﯼ ﺍﻋﺪﺍﺩ ﻣﺨﺘﻠﻂ
ﺛﺎﺑﺖ ﻫﺎﯼ ﻫﻢ ﺑﻪ ﻫﻤﻴﻦ ﺷﮑﻞ ﺑﮑﺎﺭ ﻣﯽ ﺭﻭﻧﺪ ﻣﺜﻼﹰ 1234ﻳﮏ ﻋﺪﺩ ﺛﺎﺑﺖ ﺻﺤﻴﺢ ﺍﺳﺖ 1234.0 ،ﻳﺎ 1.234E3ﻳﮏ ﺛﺎﺑﺖ ﺍﻋﺸﺎﺭ ﻭ 1.234D3
ﻋﺪﺩ ﺍﻋﺸﺎﺭ ﺑﺎ ﺩﻗﺖ ﻣﻀﺎﻋﻒ ﺍﺳﺖ .ﺍﻋﺪﺍﺩ ﻣﺨﺘﻠﻂ ﺑﻪ ﺷﮑﻞ ) (3.14,-1E5ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﯽ ﺷﻮﻧﺪ ﻭ ﮐﺎﺭﺍﮐﺘﺮﻫﺎ ﺑﻴﻦ ﺩﻭ ﮐﻮﺗﻴﺸﻦ ﻗﺮﺍﺭ ﻣﯽ ﮔﻴﺮﻧﺪ
’ ‘AbBaﻳﺎ ’ .‘Sﺛﺎﺑﺘﻬﺎﯼ ﻣﻨﻄﻘﯽ ﻓﻘﻂ ﻣﯽ ﺗﻮﺍﻧﻨﺪ ﺩﻭ ﻣﻘﺪﺍﺭ .TRUE.ﻭ .FALSE.ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ )ﺑﻪ ﻧﻘﺎﻁ ﺍﺑﺘﺪﺍﻳﯽ ﻭ ﺍﻧﺘﻬﺎﻳﯽ ﻫﺮ ﻳﮏ ﺗﻮﺟﻪ
ﮐﻨﻴﺪ(.
ﺍﮔﺮ ﺍﻋﺪﺍﺩ ﺑﺴﻴﺎﺭ ﮐﻮﭼﮏ ﻳﺎ ﺑﺴﻴﺎﺭ ﺑﺰﺭﮒ ﺑﺎﺷﻨﺪ ،ﻣﻤﮑﻦ ﺍﺳﺖ ﺳﻴﺴﺘﻢ ﺁﻧﻬﺎ ﺭﺍ ﺻﻔﺮ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻭ ﻣﺸﮑﻞ ﺗﻘﺴﻴﻢ ﺑﺮ ﺻﻔﺮ ﺩﺭ ﻣﺤﺎﺳﺒﺎﺕ ﭘﻴﺶ
ﺁﻳﺪ ﻳﺎ ﺍﻳﻨﮑﻪ ﺳﻴﺴﺘﻢ ﺩﭼﺎﺭ ﺳﺮ ﺭﻳﺰ ﮔﺮﺩﺩ .ﺍﻳﻦ ﺧﻄﺎﻫﺎ ﺑﺴﻴﺎﺭ ﺭﺍﻳﺞ ﻫﺴﺘﻨﺪ ﻭ ﺍﺷﮑﺎﻝ ﮔﺰﺍﺭﺵ ﺷﺪﻩ ﺑﻪ ﺳﻴﺴﺘﻢ ﺑﺴﺘﮕﯽ ﺧﻮﺍﻫﺪ ﺩﺍﺷﺖ.
ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮﻫﺎ
ﺑﺮﺍﯼ ﺗﺨﺼﻴﺺ ﺣﺎﻓﻈﻪ ﻻﺯﻡ ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎ ،ﻣﺘﺮﺟﻢ ﺑﺮﻧﺎﻣﻪ ) (Compilerﺑﺎﻳﺪ ﻧﺎﻡ ،ﻧﻮﻉ ﻭ ﺍﻧﺪﺍﺯﻩ ﻫﺮ ﻣﺘﻐﻴﺮ ﺭﺍ ﺑﺪﺍﻧﺪ .ﺍﮔﺮ ﺍﺯ ﺩﺳﺘﻮﺭ IMPILICIT
NONEﺍﺳﺘﻔﺎﺩﻩ ﮔﺮﺩﺩ ،ﻻﺯﻡ ﺍﺳﺖ ﮐﻪ ﺗﻤﺎﻡ ﻣﺘﻐﻴﺮﻫﺎ ﺗﻌﺮﻳﻒ ﮔﺮﺩﻧﺪ .ﺩﺭ ﻏﻴﺮ ﺍﻳﻨﺼﻮﺭﺕ ﻧﻮﻉ ﻣﺘﻐﻴﺮ ﺑﺎ ﺣﺮﻑ ﺍﻭﻝ ﺁﻥ ﻣﺸﺨﺺ ﻣﯽ ﮔﺮﺩﺩ.
ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺑﺎ ﺩﺳﺘﻮﺭ ﺯﻳﺮ ﺻﻮﺭﺕ ﻣﯽ ﮔﻴﺮﺩ )ﺍﻳﻦ ﺗﻌﺮﻳﻒ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺑﺴﻴﺎﺭ ﭘﺴﻨﺪﻳﺪﻩ ﺍﺳﺖ(:
ﻋﺒﺎﺭﺍﺕ ﺳﺎﺩﻩ
ﻋﻤﻠﮕﺮﻫﺎﻳﯽ ﻣﺎﻧﻨﺪ ) / ، - ، +ﻫﻤﺎﻥ ÷ ﺍﺳﺖ( ﻭ * )ﻫﻤﺎﻥ × ﺍﺳﺖ( ﺭﺍ ﻣﯽ ﺷﻨﺎﺳﻴﺪ .ﻋﻤﻠﮕﺮ ﺗﻮﺍﻥ ﺩﺭ ﻓﺮﺗﺮﻥ ﺑﻪ ﺷﮑﻞ ** ﺍﺳﺖ .ﺍﻭﻟﻮﻳﺖ ﻣﺤﺎﺳﺒﻪ
ﺩﺭ ﻋﺒﺎﺭﺍﺕ
.1ﭘﺮﺍﻧﺘﺰ – ﺍﮔﺮ ﺩﺭ ﻋﺒﺎﺭﺍﺕ ،ﭘﺮﺍﻧﺘﺰ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺍﻭﻝ ﺩﺍﺧﻠﯽ ﺗﺮﻳﻦ ﭘﺮﺍﻧﺘﺰ ﻣﺤﺎﺳﺒﻪ ﺧﻮﺍﻫﺪ ﺷﺪ ﻭ ﺑﻪ ﻫﻤﻴﻦ ﺗﺮﺗﻴﺐ
.2ﺗﻮﺍﻥ
.3ﺿﺮﺏ ﻭ ﺗﻘﺴﻴﻢ
.4ﺟﻤﻊ ﻭ ﻣﻨﻬﺎ
ﻭ ﺍﮔﺮ ﺩﻭ ﻋﺒﺎﺭﺕ ﺍﺯ ﺍﻭﻟﻮﻳﺖ ﻳﮑﺴﺎﻧﯽ ﺑﺮﺧﻮﺭﺩﺍﺭ ﺑﺎﺷﻨﺪ ،ﻣﺤﺎﺳﺒﻪ ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ ﺧﻮﺍﻫﺪ ﺑﻮﺩ .ﺑﺮﺍﯼ ﻣﺜﺎﻝ ﻋﺒﺎﺭﺕ
The image part with relationship ID
rId6 was not found in the file. relationship ID rId5 was not
found in the file.
ﻳﮑﺴﺎﻥ ﻫﺴﺘﻨﺪ .ﻻﺯﻡ ﺍﺳﺖ ﺑﺪﺍﻧﻴﺪ ﮐﻪ ﺣﺎﺻﻞ ﻋﻤﻠﻴﺎﺕ ﺑﻴﻦ ﺩﻭ ﺍﻋﺸﺎﺭ ،ﺍﻋﺸﺎﺭ ﺍﺳﺖ ﻭ ﺣﺎﺻﻞ ﻋﻤﻠﻴﺎﺕ ﺑﻴﻦ ﺩﻭ ﻋﺪﺩ ﺻﺤﻴﺢ ،ﻋﺪﺩ ﺻﺤﻴﺢ ﺍﺳﺖ؛
ﺣﺎﺻﻞ ﻋﻤﻠﻴﺎﺕ ﺑﻴﻦ ﻋﺪﺩ ﺍﻋﺸﺎﺭ ﻭ ﻋﺪﺩ ﺻﺤﻴﺢ ،ﻋﺪﺩ ﺍﻋﺸﺎﺭ ﺍﺳﺖ .ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺣﺎﺻﻞ 1/5ﺑﺮﺍﺑﺮ 0ﺻﺤﻴﺢ ﺍﺳﺖ ،ﺣﺎﺻﻞ 1./5.ﺑﺮﺍﺑﺮ
0.2ﺍﻋﺸﺎﺭ ﺍﺳﺖ ﻭ ﺣﺎﺻﻞ 1d0/1d5ﺑﺮﺍﺑﺮ 0.2ﻣﻀﺎﻋﻒ ﺍﺳﺖ .ﺑﻄﻮﺭ ﮐﻠﯽ ﻣﯽ ﺗﻮﺍﻥ ﮔﻔﺖ ﮐﻪ ﺩﺭ ﻣﺤﺎﺳﺒﻪ ﻋﺒﺎﺭﺍﺕ ﺍﮔﺮ ﺗﺒﺪﻳﻞ ﻧﻮﻉ ﻻﺯﻡ ﺑﺎﺷﺪ،
ﻣﺘﻐﻴﺮﻫﺎ ﺑﻪ ﻣﺘﻐﻴﺮ ﺑﺎ ﺑﺎﻻﺗﺮﻳﻦ ﺩﻗﺖ ﺗﺒﺪﻳﻞ ﻣﯽ ﮔﺮﺩﻧﺪ .ﺩﺭ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻋﺪﺍﺩ ﺩﻗﺖ ﮐﻨﻴﺪ ،ﻋﺪﺩ 4ﺻﺤﻴﺢ ﺍﺳﺖ ،ﻋﺪﺩ 4.ﺍﻋﺸﺎﺭ ﻭ ﻋﺪﺩ 4d0
ﻣﻀﺎﻋﻒ ﺍﺳﺖ.
ﺑﺮﺍﺑﺮ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﻣﻘﺪﺍﺭ ﻳﮏ ﻣﺘﻐﻴﺮ ﺑﺎ ﻳﮏ ﻋﺒﺎﺭﺕ ﻳﮑﯽ ﺍﺯ ﺳﺎﺩﻩ ﺗﺮﻳﻦ ﻋﺒﺎﺭﺍﺕ ﻫﺮ ﺯﺑﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺍﺳﺖ.
variable = expression
ﺳﻤﺖ ﺭﺍﺳﺖ ،ﻣﻘﺪﺍﺭ ﺁﻧﺮﺍ ﺩﺭ ﻣﺘﻐﻴﺮ aﻗﺮﺍﺭ ﻣﯽ ﺩﻫﺪ .ﮐﺎﺭﺑﺮﺩ ﭘﺮﺍﻧﺘﺰ ﺩﺭ ﻋﺒﺎﺭﺍﺕ ﺭﻳﺎﺿﯽ ﺑﻪ ﺧﻮﺍﻧﺎﻳﯽ ﺑﻴﺸﺘﺮ ﺑﺮﻧﺎﻣﻪ ﻭ ﺟﻠﻮﮔﻴﺮﯼ ﺍﺯ ﺍﺷﺘﺒﺎﻩ ﮐﻤﮏ ﻣﯽ
ﮐﻨﺪ.
ﻣﻘﺎﻳﺴﻪ ﻣﺘﻐﻴﺮﻫﺎ
ﻣﻘﺎﻳﺴﻪ ﻣﺘﻐﻴﺮﻫﺎ ﺑﻪ ﮐﺎﻣﭙﻴﻮﺗﺮ ﻗﺪﺭﺕ ﺗﺼﻤﻴﻢ ﮔﻴﺮﯼ ﺩﺍﺩﻩ ﺍﺳﺖ .ﻣﺘﺄﺳﻔﺎﻧﻪ ﻓﺮﺗﺮﻥ 77ﺍﺯ ﻋﺒﺎﺭﺍﺗﯽ ﻣﺎﻧﻨﺪ > < ,ﻭ ...ﺭﺍ ﺑﻪ ﺍﻳﻦ ﺷﮑﻞ ﭘﺸﺘﻴﺒﺎﻧﯽ ﻧﻤﯽ
ﺍﻳﻦ ﻣﺸﮑﻞ ﺩﺭ ﻓﺮﺗﺮﻥ 90ﺣﻞ ﺷﺪﻩ ﺍﺳﺖ ﻭ ﻓﺮﺗﺮﻥ 90ﻋﻼﻣﺘﻬﺎﯼ > == ،=> ،=< ،< ،ﻭ >< ﺭﺍ ﻫﻢ ﭘﺸﺘﻴﺒﺎﻧﯽ ﻣﯽ ﮐﻨﺪ .ﺑﺮﺍﯼ ﻣﺜﺎﻝ ﻋﺒﺎﺭﺕ
) (A .EQ. Bﻣﻌﺎﺩﻝ ) (A==Bﻭ ﻳﮏ ﻋﺒﺎﺭﺕ ﻣﻨﻄﻘﯽ ﺍﺳﺖ ،ﺍﻳﻦ ﻋﺒﺎﺭﺕ ﺩﺭ ﺻﻮﺭﺗﯽ ﺻﺤﻴﺢ ﺍﺳﺖ ﮐﻪ ﻣﻘﺪﺍﺭ ﻣﺘﻐﻴﺮﻫﺎ ﺑﺎ ﻫﻢ ﺑﺮﺍﺑﺮ ﺑﺎﺷﺪ .ﺩﺭ ﻫﺮ ﺣﺎﻝ
ﺣﺎﺻﻞ ﻳﮏ ﻋﺒﺎﺭﺕ ﻣﻘﺎﻳﺴﻪ ﺍﯼ ﻳﮏ ﻣﻘﺪﺍﺭ ﻣﻨﻄﻘﯽ ﺧﻮﺍﻫﺪ ﺑﻮﺩ ﮐﻪ ﻣﯽ ﺗﻮﺍﻧﺪ ﺩﺭﺳﺖ ﻳﺎ ﺍﺷﺘﺒﺎﻩ ﺑﺎﺷﺪ.
ﻋﺒﺎﺭﺍﺕ ﻣﻨﻄﻘﯽ
x .NEQV. y x .EQV. y x .OR. y x .AND. y .NOT. x y x
ﮐﺎﺭﺍﮐﺘﺮ ﻭ ﺭﺷﺘﻪ
ﺩﺭ ﻓﺮﺗﺮﻥ 77ﺭﺷﺘﻪ ﻫﺎ ﺑﺎﻳﺪ ﺍﻧﺪﺍﺯﻩ ﺍﯼ ﺛﺎﺑﺖ ﻭ ﺍﺯ ﭘﻴﺶ ﺗﻌﻴﻴﻦ ﺷﺪﻩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﺗﻌﺮﻳﻒ ﺭﺷﺘﻪ ﺩﺭ ﻓﺮﺗﺮﻥ 77ﺑﻪ ﺍﻳﻦ ﺷﮑﻞ ﺍﺳﺖ:
CHARACTER name*length
ﺑﺮﺍﯼ ﻧﻮﺷﺘﻦ ﺭﺷﺘﻪ ﻫﺎﯼ ﺛﺎﺑﺖ ﺗﻌﺪﺍﺩ ﻻﺯﻡ ﻧﻴﺴﺖ ﻭ ﺑﺠﺎﯼ ﺁﻥ ﺍﺯ * ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮔﺮﺩﺩ.
)*(*CHARACTER format_scope
ﺩﻭ ﻋﻤﻠﻴﺎﺕ ﺳﺎﺩﻩ ﺑﺎ ﺭﺷﺘﻪ ﻫﺎﯼ ﮐﺎﺭﺍﮐﺘﺮﯼ ﺩﺭ ﻓﺮﺗﺮﻥ 77ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ ﺍﺳﺘﺨﺮﺍﺝ ﺑﺨﺸﯽ ﺍﺯ ﺭﺷﺘﻪ ﻳﺎ ﭘﻴﻮﻧﺪ ﺩﻭ ﺭﺷﺘﻪ ﺑﻪ ﻳﮑﺪﻳﮕﺮ .ﺍﺳﺘﺨﺮﺍﺝ ﺑﺨﺸﯽ
ﺍﺯ ﺭﺷﺘﻪ ﺑﺎ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﻋﻼﻣﺖ :ﺑﻴﻦ ﺷﺮﻭﻉ ﻭ ﭘﺎﻳﺎﻥ ﺑﺨﺶ ﻣﻮﺭﺩ ﻧﻈﺮ ﺻﻮﺭﺕ ﻣﯽ ﮔﻴﺮﺩ .ﺑﺮﺍﯼ ﺗﺮﮐﻴﺐ ﺭﺷﺘﻪ ﻫﺎ ﺍﺯ ﻋﻼﻣﺖ //ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮔﺮﺩﺩ.
ﺑﺮﺍﯼ ﮐﺎﺭﺍﮐﺘﺮﻫﺎﯼ ﺷﺮﻭﻉ ﻭ ﭘﺎﻳﺎﻥ ,ﻣﯽ ﺗﻮﺍﻥ ﻋﺪﺩ ﺷﺮﻭﻉ ﻳﺎ ﭘﺎﻳﺎﻥ ﺭﺍ ﻧﻨﻮﺷﺖ.
’first_word=’FORTRAN
)second_word=first_word(:3
)third_word=second_word // first_word(4:
ﻣﺘﻐﻴﺮ third_wordﭘﺲ ﺍﺯ ﺍﺟﺮﺍﯼ ﺍﻳﻦ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺮﺍﺑﺮ ﺭﺷﺘﻪ ﮐﺎﺭﺍﮐﺘﺮﯼ FOR TRANﺧﻮﺍﻫﺪ ﺑﻮﺩ) ﻓﺎﺻﻠﻪ ﺑﻌﻠﺖ ﺍﻧﺪﺍﺯﻩ ﻣﺘﻐﻴﺮ
second_wordﺍﺳﺖ(.
ﺩﺭ ﺗﻮﺍﺑﻊ ﺩﺍﺧﻠﯽ ﻓﺮﺗﺮﻥ ،ﺗﻮﺍﺑﻊ ﺭﺷﺘﻪ ﺍﯼ ﻧﻴﺰ ﻭﺟﻮﺩ ﺩﺍﺭﺩ .ﺑﺮﺍﯼ ﻣﺜﺎﻝ ﺗﺎﺑﻊ LENﺍﻧﺪﺍﺯﻩ ﺭﺷﺘﻪ ﻣﯽ ﺩﻫﺪ ،ﺗﻮﺍﺑﻊ CHARﻭ ICHARﺑﺘﺮﺗﻴﺐ ﺑﺮﺍﯼ
ﺗﺒﺪﻳﻞ ﻋﺪﺩ ﺻﺤﻴﺢ ﺑﻪ ﮐﺎﺭﺍﮐﺘﺮ ﻭ ﺗﺒﺪﻳﻞ ﮐﺎﺭﺍﮐﺘﺮ ﺑﻪ ﻋﺪﺩ ﺻﺤﻴﺢ ﺑﻪ ﮐﺎﺭ ﻣﯽ ﺭﻭﻧﺪ INDEX .ﺑﺮﺍﯼ ﻳﺎﻓﺘﻦ ﻳﮏ ﺭﺷﺘﻪ ﺩﺭ ﺭﺷﺘﻪ ﺩﻳﮕﺮ ﮐﺎﺭﺑﺮﺩ ﺩﺍﺭﺩ.
ﺗﻮﺍﺑﻊ ﻣﻘﺎﻳﺴﻪ ﺭﺷﺘﻪ ﻫﺎ ﻣﺎﻧﻨﺪ LLE ،LGT ،LGEﻭ LLTﻭ ﺑﺴﻴﺎﺭﺱ ﺍﺯ ﺗﻮﺍﺑﻊ ﺩﻳﮕﺮ ﻭﺟﻮﺩ ﺩﺍﺭﻧﺪ ﮐﻪ ﺩﺭ ﺻﻮﺭﺕ ﻧﻴﺎﺯ ﺍﻣﮑﺎﻥ ﻣﻄﺎﻟﻌﻪ ﺁﻧﻬﺎ ﺭﺍ ﺧﻮﺍﻫﻴﺪ
ﺩﺍﺷﺖ.
ﻭﺭﻭﺩﯼ ﻭ ﺧﺮﻭﺟﯽ
ﺩﺭ ﺍﻏﻠﺐ ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﻧﻴﺎﺯ ﺩﺍﺭﻳﻢ ﮐﻪ ﺍﻃﻼﻋﺎﺕ ﻭﺭﻭﺩﯼ ﺭﺍ ﺍﺯ ﺻﻔﺤﻪ ﮐﻠﻴﺪ ﻳﺎ ﻓﺎﻳﻞ ﺑﺨﻮﺍﻧﻴﻢ ﻭ ﺍﻃﻼﻋﺎﺕ ﺧﺮﻭﺟﯽ ﺭﺍ ﺩﺭ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻧﺸﺎﻥ ﺩﻫﻴﻢ ﻳﺎ
ﺩﺳﺘﻮﺭ READ
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺮﺍﯼ ﺩﺭﻳﺎﻓﺖ ﻭﺭﻭﺩﯼ ﺍﺯ ﺻﻔﺤﻪ ﮐﻠﻴﺪ ﺑﮑﺎﺭ ﻣﯽ ﺭﻭﺩ ﻭ ﺳﺎﺧﺘﺎﺭ ﺁﻥ ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﺍﺳﺖ.
unit typeﻋﺪﺩﯼ ﺍﺳﺖ ﮐﻪ ﻧﻮﻉ ﻭﺭﻭﺩﯼ ﺭﺍ ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ،ﻣﺜﻼﹰ 5ﺑﺮﺍﯼ ﺻﻔﺤﻪ ﮐﻠﻴﺪ ،ﺍﻳﻦ ﻋﺪﺩ ﺍﻏﻠﺐ ﺑﺮﺍﯼ ﺧﻮﺍﻧﺪﻥ ﻭﺭﻭﺩﯼ ﺍﺯ ﻓﺎﻳﻞ ﺑﮑﺎﺭ ﻣﯽ
ﺭﻭﺩ format .ﺑﺮﺍﯼ ﺩﺭﻳﺎﻓﺖ ﻭﺭﻭﺩﯼ ﻣﻌﻤﻮﻻﹰ * ﺍﺳﺖ ،ﺍﻣﺎ ﮐﺎﺭﺑﺮﺩ ﺍﺻﻠﯽ ﺁﻥ ﺑﺮﺍﯼ ﺧﻮﺍﻧﺪﻥ ﻭﺭﻭﺩﯼ ﻓﺮﻣﺖ ﺷﺪﻩ ﺍﺯ ﻓﺎﻳﻞ ﺍﺳﺖ.
ﺩﺳﺘﻮﺭ WRITE
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺮﺍﯼ ﻧﻤﺎﻳﺶ ﺧﺮﻭﺟﯽ ﺩﺭ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻳﺎ ﻓﺮﺳﺘﺎﺩﻥ ﺧﺮﻭﺟﯽ ﺑﻪ ﭘﺮﻳﻨﺘﺮ ﻳﺎ ﻓﺎﻳﻞ ﺧﺮﻭﺟﯽ ﺑﮑﺎﺭ ﻣﯽ ﺭﻭﺩ.
ﻣﺎﻧﻨﺪ ﺩﺳﺘﻮﺭ unit type ،READﻧﻮﻉ ﺧﺮﻭﺟﯽ ﺭﺍ ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﻭ formatﻓﺮﻣﺖ ﺧﺮﻭﺟﯽ ﺭﺍ ﺗﻌﻴﻴﻦ ﻣﯽ ﮐﻨﺪ.
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺍﺑﺘﺪﺍ ﺭﺷﺘﻪ The total is:ﻭ ﺩﺭ ﺍﺩﺍﻣﻪ ﻣﻘﺪﺍﺭ ﻣﺘﻐﻴﺮ totalﺭﺍ ﺭﻭﯼ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻧﺸﺎﻥ ﺧﻮﺍﻫﺪ ﺩﺍﺩ.
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻗﺎﻟﺐ ﺑﻨﺪﯼ ﺩﺍﺩﻩ ﺭﺍ ﺗﻌﻴﻴﻦ ﻣﯽ ﮐﻨﺪ ﻭ ﺩﺭ ﺩﺳﺘﻮﺭﺍﺕ ﻭﺭﻭﺩﯼ ﻭ ﺧﺮﻭﺟﯽ ﺑﮑﺎﺭ ﻣﯽ ﺭﻭﺩ .ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﻪ ﺩﻭ ﺻﻮﺭﺕ ﺑﻪ ﮐﺎﺭ ﻣﯽ ﺭﻭﺩ .ﻳﮏ
ﺭﻭﺵ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺴﺘﻘﻴﻢ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺩﺭ ﺑﺨﺶ formatﺩﺭ ﺩﺳﺘﻮﺭﺍﺕ ﻭﺭﻭﺩﯼ ﻭ ﺧﺮﻭﺟﯽ ﺍﺳﺖ .ﺭﻭﺵ ﺩﻭﻡ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﻳﮏ ﺷﻤﺎﺭﻩ ﺧﻂ ﻗﺒﻞ ﺍﺯ ﺍﻳﻦ
ﺩﺳﺘﻮﺭ )ﺷﻤﺎﺭﻩ ﺧﻂ ﺩﺭ ﻓﺮﺗﺮﻥ 77ﺑﻴﻦ ﺧﻂ 1ﺗﺎ 5ﻗﺮﺍﺭ ﻣﯽ ﮔﻴﺮﺩ (.ﻭ ﺍﺭﺟﺎﻉ ﺍﻳﻦ ﺷﻤﺎﺭﻩ ﺩﺭ ﺩﺳﺘﻮﺭﺍﺕ ﻭﺭﻭﺩﯼ ﻭ ﺧﺮﻭﺟﯽ ﺍﺳﺖ .ﺳﺎﺧﺘﺎﺭ ﺍﻳﻦ
ﻳﺎ ﺍﮔﺮ ﺩﺍﺧﻞ ﺩﺳﺘﻮﺭﺍﺗﯽ ﭼﻮﻥ WRITEﻗﺮﺍﺭ ﮔﻴﺮﺩ ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﺧﻮﺍﻫﺪ ﺑﻮﺩ.
ﺳﺎﺧﺘﺎﺭ ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ ﺩﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﺸﺨﺺ ﮐﻨﻨﺪﻩ ﺗﻌﺪﺍﺩ ﺍﺭﻗﺎﻡ ﺧﺮﻭﺟﯽ ﻭ ﺷﮑﻞ ﻧﻤﺎﻳﺶ ﺁﻧﻬﺎﺳﺖ.
ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺩﺭ ﻣﺜﺎﻟﻬﺎﯼ ﻗﺒﻠﯽ ﻣﺘﻮﺟﻪ ﺷﺪﻩ ﺍﻳﺪ؛ ﺍﮔﺮ ﻗﺎﻟﺐ ﺑﻨﺪﯼ ﺁﺯﺍﺩ ﺍﻧﺘﺨﺎﺏ ﮔﺮﺩﺩ ،ﻣﯽ ﺗﻮﺍﻥ ﺑﺠﺎﯼ ﺍﻳﻦ ﺑﺨﺶ ﺩﺭ ﺩﺳﺘﻮﺭﺍﺕ ﻭﺭﻭﺩﯼ ﻭ ﺧﺮﻭﺟﯽ
ﺑﺮﺍﯼ ﻣﺸﺨﺺ ﮐﺮﺩﻥ ﻗﺎﻟﺐ ﺑﻨﺪﯼ ﺩﺭ ﺩﺳﺘﻮﺭ ،FORMATﻗﺎﻟﺐ ﻫﺮ ﻣﺘﻐﻴﺮ ﺑﺎﻳﺪ ﻣﺸﺨﺺ ﮔﺮﺩﺩ .ﺍﻳﻦ ﻗﺎﻟﺐ ﺑﻨﺪﯼ ﺷﺎﻣﻞ ﻧﻮﻉ ﻣﺘﻐﻴﺮ ﻭ ﺗﻌﺪﺍﺩ ﺍﺭﻗﺎﻡ
Logical Lw
ﺩﺭ ﺍﻳﻦ ﺟﺪﻭﻝ ﺣﺮﻭﻑ ﺑﺰﺭﮒ ﻣﺸﺨﺺ ﮐﻨﻨﺪﻩ ﻧﻮﻉ ﻣﺘﻐﻴﺮ ﻫﺴﺘﻨﺪ:
ﺑﺮﺍﯼ ﻣﺜﺎﻝ:
ﺍﺑﺘﺌﺎ ﻣﮑﺎﻥ ﻧﻤﺎ ﻳﮏ ﺧﺎﻧﻪ ﺑﻪ ﺭﺍﺳﺖ ﺣﺮﮐﺖ ﻣﯽ ﮐﻨﺪ ،ﺭﺷﺘﻪ ﮐﺎﺭﺍﮐﺘﺮﯼ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﯽ ﺳﻮﺩ ،ﻣﻘﺪﺍﺭ ﻣﺘﻐﻴﺮ fﺑﺎ ﺣﺪﺍﮐﺜﺮ 15ﺭﻗﻢ ﻭ ﺑﺎ ﺩﻗﺖ 5ﺭﻗﻢ
ﺍﻋﺸﺎﺭ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩ ﻭ ﺩﻭﺑﺎﺭﻩ ﺭﺷﺘﻪ ﮐﺎﺭﺍﮐﺘﺮ ﭼﺎﭖ ﻣﯽ ﮔﺮﺩﺩ .ﻣﯽ ﺗﻮﺍﻥ ﺍﺯ ﮐﻠﻤﺎﺕ ﮐﻠﻴﺪﯼ UNITﻭ FMTﺻﺮﻓﻨﻈﺮ ﮐﺮﺩ ﻭ ﻓﻘﻂ ﻣﻘﺪﺍﺭ ﺁﻧﻬﺎ ﺭﺍ
ﻧﻮﺷﺖ.
ﺷﺎﻳﺪ ﺍﺯ ﺁﻣﻮﺧﺘﻦ ﺗﺌﻮﺭﯼ ﮐﻤﯽ ﺧﺴﺘﻪ ﺷﺪﻩ ﺑﺎﺷﻴﺪ ،ﺣﺎﻝ ﻭﻗﺖ ﺁﻥ ﺍﺳﺖ ﮐﻪ ﺁﻧﭽﻪ ﺭﺍ ﮐﻪ ﺁﻣﻮﺧﺘﻪ ﺍﻳﻢ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﻢ .ﻣﯽ ﺧﻮﺍﻫﻴﻢ ﺑﺮﻧﺎﻣﻪ ﺍﯼ
ﺑﻨﻮﻳﺴﻴﻢ ﮐﻪ ﺭﻳﺸﻪ ﻫﺎﯼ ﺣﻘﻴﻘﯽ ﻳﮏ ﻣﻌﺎﺩﻟﻪ ﺩﺭﺟﻪ 2ﺭﺍ ﭘﻴﺪﺍ ﮐﻨﺪ .ﺿﺮﺍﻳﺐ ﻣﻌﺎﺩﻟﻪ ﺩﺭﺟﻪ 2ﺭﺍ ﺍﺯ ﻭﺭﻭﺩﯼ ﺧﻮﺍﻫﻴﻢ ﺧﻮﺍﻧﺪ.
ﺩﺍﺭﺍﯼ ﺩﻭ ﺭﻳﺸﻪ ﺍﺳﺖ .ﺩﺭ ﺻﻮﺭﺗﯽ ﺍﻳﻦ ﺭﻳﺸﻪ ﻫﺎ ﺣﻘﻴﻘﯽ ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﺎﺷﺪ. ﻣﯽ ﺩﺍﻧﻴﻢ ﮐﻪ ﻫﺮ ﻣﻌﺎﺩﻟﻪ ﺩﺭﺟﻪ 2ﺑﻪ ﺷﮑﻞ
the file.
ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ ﺭﻳﺸﻪ ﻫﺎﯼ ﺣﻘﻴﻘﯽ ﻣﻌﺎﺩﻟﻪ ﺍﺯ ﺭﺍﺑﻄﻪ ﺯﻳﺮ ﺑﺪﺳﺖ ﻣﯽ ﺁﻳﻨﺪ.
The image part with relationship ID rId10 was not found in the file.
:ﺩﻳﺎﮔﺮﺍﻡ ﺑﺮﻧﺎﻣﻪ
ﺷﺮﻭﻉ.1
ﭘﺎﻳﺎﻥ.5
:ﺑﺮﻧﺎﻣﻪ
PROGRAM Equation_solver_fortran
! Variable decleration
CHARACTER::end_key
REAL::a,b,c
REAL::Delta, x1, x2
! Main Porgram
WRITE(*,*) ‘a: ?’
READ(*,*) a
WRITE(*,*) ‘b: ?’
READ(*,*) b
WRITE(*,*) ‘c: ?’
READ(*,*) c
Delta=b**2-4*a*c
IF (Delta >= 0) THEN
)x1=(b+SQRT(Delta))/(2*a
)x2=(b-SQRT(Delta))/(2*a
ELSE
ENDIF
READ(*,*) end_key
ﺍﮔﺮ ﺩﺭ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﺍﺷﺘﺒﺎﻫﯽ ﻧﮑﺮﺩﻩ ﺑﺎﺷﻴﺪ ،ﺑﺮﻧﺎﻣﻪ ﺍﺟﺮﺍ ﺧﻮﺍﻫﺪ ﺷﺪ .ﺗﺒﺮﻳﮏ ﻣﯽ ﮔﻮﻳﻢ ،ﺷﻤﺎ ﺍﻭﻟﻴﻦ ﺑﺮﻧﺎﻣﻪ ﻣﻬﻨﺪﺳﯽ ﺧﻮﺩ ﺭﺍ ﻧﻮﺷﺘﻪ ﺍﻳﺪ .ﺩﺭ
ﺧﻮﺍﻧﺪﻥ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ ﻧﺒﺎﻳﺪ ﻣﺸﮑﻠﯽ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ .ﻓﻘﻂ ﻣﻤﮑﻦ ﺍﺳﺖ ﺳﺎﺧﺘﺎﺭ IF..THEN..ELSEﻭ ﺗﺎﺑﻊ )( SQRTﺑﺮﺍﻳﺘﺎﻥ ﺗﺎﺯﮔﯽ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻭ
ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺣﺪﺱ ﺯﺩﻩ ﺍﻳﺪ ،ﺳﺎﺧﺘﺎﺭ IF..THEN..ELSEﺳﺎﺧﺘﺎﺭ ﺗﺼﻤﻴﻢ ﮔﻴﺮﯼ ﻭ ﺗﺎﺑﻊ )( SQRTﺗﺎﺑﻊ ﺟﺬﺭ ﻣﯽ ﺑﺎﺷﺪ ﮐﻪ ﺩﺭ ﺑﺨﺸﻬﺎﯼ ﺑﻌﺪﯼ ﺩﺭ
ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺷﻤﺎ ﻓﻘﻂ ﻣﺤﺪﻭﺩ ﺑﻪ ﺗﻔﮑﺮ ﺷﻤﺎ ﺩﺭ ﻣﻮﺭﺩ ﺑﺮﻧﺎﻣﻪ ﻫﺎﺳﺖ .ﻫﺮ ﺁﻧﭽﻪ ﮐﻪ ﻓﮑﺮ ﮐﻨﻴﺪ ﺭﺍ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺑﻨﻮﻳﺴﻴﺪ .ﺣﺘﯽ ﺑﺮﻧﺎﻣﻪ ﻫﺎﯼ ﭘﻴﭽﻴﺪﻩ
ﻫﻮﺵ ﻣﺼﻨﻮﻋﯽ ﻧﻴﺰ ﺑﺎ ﻫﻤﻴﻦ ﺩﺳﺘﻮﺭﺍﺕ ﺳﺎﺩﻩ ﻗﺎﺑﻞ ﻧﻮﺷﺘﻦ ﺍﺳﺖ .ﺩﺭ ﻫﺮ ﺣﺎﻝ ﺍﮔﺮ ﺑﺪﺍﻧﻴﺪ ﭼﻪ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﺑﺴﻴﺎﺭ ﻟﺬﺕ ﺑﺨﺶ
ﺧﻮﺍﻫﺪ ﺑﻮﺩ .ﺁﻣﻮﺧﺘﻦ ﻳﮏ ﺯﺑﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﻣﺎﻧﻨﺪ ﻳﺎﺩﮔﺮﻓﺘﻦ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻳﮏ ﺍﺑﺰﺍﺭ ﺍﺳﺖ .ﻫﺮ ﭼﻪ ﺍﺑﺰﺍﺭ ﻗﻮﻳﺘﺮﯼ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﮐﺎﺭﻫﺎ ﺳﺎﺩﻩ ﺗﺮ
ﺍﻧﺠﺎﻡ ﺧﻮﺍﻫﺪ ﮔﺮﻓﺖ ،ﺯﺑﺎﻥ ﻓﺮﺗﺮﻥ ﻳﮏ ﺍﺑﺰﺍﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﻣﻬﻨﺪﺳﯽ ﺑﺴﻴﺎﺭ ﮐﺎﺭﺁﻣﺪ ﺍﺳﺖ.
ﮐﺎﺭ ﮐﺮﺩﻥ ﺑﺎ ﻓﺎﻳﻠﻬﺎ ﺩﺭ ﻓﺮﺗﺮﻥ ﺑﺴﻴﺎﺭ ﺳﺎﺩﻩ ﺍﺳﺖ .ﻭﺭﻭﺩﯼ ﻭﺧﺮﻭﺟﯽ ﻓﺎﻳﻞ ﻫﻢ ﻣﺎﻧﻨﺪ ﻭﺭﻭﺩﯼ ﺍﺯ ﺻﻔﺤﻪ ﮐﻠﻴﺪ ﻳﺎ ﺧﺮﻭﺟﯽ ﺑﻪ ﻧﻤﺎﻳﺸﮕﺮ ﺑﺎ ﺩﺳﺘﻮﺭ
READﻭ WRITEﺻﻮﺭﺕ ﻣﯽ ﮔﻴﺮﺩ .ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺑﺨﺶ UNITﺩﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭﺍﺕ ﻣﺸﺨﺺ ﮐﻨﻨﺪﻩ ﻧﻮﻉ ﻭﺭﻭﺩﯼ ﻭ ﺧﺮﻭﺟﯽ ﺍﺳﺖ .ﺑﺮﺍﯼ ﻭﺭﻭﺩﯼ
ﺍﺯ ﺻﻔﺤﻪ ﮐﻠﻴﺪ ﻭ ﺧﺮﻭﺟﯽ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ،ﺑﺨﺶ UNITﺩﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺮﺍﺑﺮ * ﻗﺮﺍﺭ ﻣﯽ ﮔﻴﺮﺩ .ﺑﺮﺍﯼ ﻭﺭﻭﺩﯼ ﻭ ﺧﺮﻭﺟﯽ ﺍﺯ ﻓﺎﻳﻞ ،ﺍﺑﺘﺪﺍ ﻓﺎﻳﻞ
ﺭﺍ ﺑﺎﺯ ﻣﯽ ﮐﻨﻴﻢ ،ﺍﻳﻦ ﮐﺎﺭ ﻳﮏ ﻋﺪﺩ ) (UNITﺑﻪ ﻓﺎﻳﻞ ﺍﺧﺘﺼﺎﺹ ﻣﯽ ﺩﻫﺪ.
ﺩﺳﺘﻮﺭ OPEN
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻳﮏ ﻓﺎﻳﻞ ﺭﺍ ﺑﺎﺯ ﻣﯽ ﮐﻨﺪ ﻭ ﻳﮏ ﻋﺪﺩ ﺑﻪ ﻓﺎﻳﻞ ﺍﺧﺘﺼﺎﺹ ﻣﯽ ﺩﻫﺪ .ﺍﻳﻦ ﺍﻣﮑﺎﻥ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﮐﻪ ﻓﺎﻳﻞ ﺭﺍ ﺍﻳﺠﺎﺩ ﮐﺮﺩ .ﺳﺎﺧﺘﺎﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭ
numberﻋﺪﺩﯼ ﺍﺳﺖ ﮐﻪ ﺷﻤﺎ ﺑﻪ ﻓﺎﻳﻞ ﺍﺧﺘﺼﺎﺹ ﻣﯽ ﺩﻫﻴﺪ )ﺍﻳﻦ ﻋﺪﺩ ﺭﺍ ﺑﻴﻦ 0ﺗﺎ 255ﺍﻧﺘﺨﺎﺏ ﮐﻨﻴﺪ – ﻳﻌﻨﯽ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺑﺎ ﺧﻴﺎﻝ
ﺭﺍﺣﺖ ﺗﺎ 255ﻓﺎﻳﻞ ﻣﺠﺰﺍ ﺭﺍ ﺑﺎﺯ ﮐﻨﻴﺪ!( ،ﺍﻳﻦ ﻋﺪﺩ ﺷﻨﺎﺳﻪ ﻓﺎﻳﻞ ﺍﺳﺖ.
statusﻭﺿﻌﻴﺖ ﻓﺎﻳﻞ ﺭﺍ ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﻭ ﻣﯽ ﺗﻮﺍﻧﺪ ﺑﺮﺍﯼ ﺍﻳﺠﺎﺩ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ’ ‘NEWﺑﺎﺷﺪ ،ﻳﺎ ’ ‘OLDﺑﺮﺍﯼ ﺑﺎﺯ ﮐﺮﺩﻥ ﻓﺎﻳﻞ ﻣﻮﺟﻮﺩ ﻭ ﺍﮔﺮ
ﻣﻄﻤﺌﻦ ﻧﻴﺴﺘﻴﺪ ’ ‘UNKNOWNﺑﮑﺎﺭ ﻣﯽ ﺭﻭﺩ ﻭ ’ ‘SCRATCHﺑﺮﺍﯼ ﺍﻳﺠﺎﺩ ﻓﺎﻳﻠﻬﺎﯼ ﻣﻮﻗﺖ ﮐﻪ ﺑﺎ ﭘﺎﻳﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻳﺎ ﺑﺴﺘﻪ ﺷﺪﻥ ﻓﺎﻳﻞ ،ﻓﺎﻳﻞ ﺍﺯ ﺑﻴﻦ
ﻣﯽ ﺭﻭﺩ! ﻭﺿﻌﻴﺖ ’ ‘REPLACEﺑﺮﺍﯼ ﺟﺎﻳﮕﺰﺍﺭﯼ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﺍﺳﺖ .ﺍﮔﺮ ﻓﺎﻳﻞ ﻣﻮﺟﻮﺩ ﺑﺎﺷﺪ ،ﭘﺎﮎ ﺷﺪﻩ ﻭ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﺟﺎﻳﮕﺰﻳﻦ ﺁﻥ ﻣﯽ ﮔﺮﺩﺩ ﻭ
accessﻧﻮﻉ ﺩﺳﺘﺮﺳﯽ ﺑﻪ ﻓﺎﻳﻞ ﺭﺍ ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﻣﻤﮑﻦ ﺍﺳﺖ ‘DIRECT’ ،ﻳﺎ ’ ‘SEQUENTALﺑﺎﺷﺪ .ﻧﻮﻉ ﺩﺳﺘﺮﺳﯽ ﺑﻪ ﻓﺎﻳﻞ ﺑﺴﻴﺎﺭ ﻣﻬﻢ
ﺍﺳﺖ ،ﺍﻣﺎ ﺩﺳﺘﺮﺳﯽ ﺗﺮﺗﻴﺒﯽ ’ ‘SEQUENTALﺑﺴﻴﺎﺭ ﺳﺎﺩﻩ ﺍﺳﺖ .ﺩﺭ ﺍﻳﻦ ﻓﺎﻳﻠﻬﺎ ﺩﺍﺩﻩ ﻫﺎ ﺑﺘﺮﺗﻴﺐ ﺧﻂ ﺑﻪ ﺧﻂ ﺧﻮﺍﻧﺪﻩ ﻭ ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮﻧﺪ .ﭘﻴﺶ
ﺩﺳﺘﻮﺭ CLOSE
ﭘﻴﺸﻨﻬﺎﺩ ﻣﯽ ﮔﺮﺩﺩ ﺑﻌﺪ ﺍﺯ ﭘﺎﻳﺎﻥ ﮐﺎﺭ ﺑﺎ ﻓﺎﻳﻞ ﺁﻧﺮﺍ ﺑﺒﻨﺪﻳﺪ .ﺳﺎﺧﺘﺎﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﺍﺳﺖ:
unitﺷﻤﺎﺭﻩ ﺷﻨﺎﺳﻪ ﻓﺎﻳﻞ ﺍﺳﺖ ﻭ statusﻭﺿﻌﻴﺖ ﺑﺴﺘﻦ ﻣﯽ ﺗﻮﺍﻧﺪ ’ ‘KEEPﺑﺮﺍﯼ ﺣﻔﻆ ﻓﺎﻳﻞ ﻭ ’ ‘DELETEﺑﺮﺍﯼ ﺣﺬﻑ ﻓﺎﻳﻞ ﺍﺳﺖ .ﭘﻴﺶ ﻓﺮﺽ
ﻫﺮ ﻣﺘﺮﺟﻢ ﺑﺮﻧﺎﻣﻪ ﻓﺮﺗﺮﻥ ﮐﺘﺎﺑﺨﺎﻧﻪ ﺍﯼ ﺍﺯ ﺗﻮﺍﺑﻊ ﺩﺍﺧﻠﯽ ﺩﺍﺭﺩ .ﺑﻌﻀﯽ ﺍﺯ ﻣﻬﻤﺘﺮﻳﻦ ﺍﻳﻦ ﺗﻮﺍﺑﻊ ﺑﻪ ﺷﺮﺡ ﺯﻳﺮ ﻫﺴﺘﻨﺪ.
ﺗﻮﺍﺑﻊ ﺭﻳﺎﺿﯽ :ﻗﺪﺭﻣﻄﻠﻖ ،ABSﺟﺬﺭ ،SQRTﻟﮕﺎﺭﻳﺘﻢ ،LOG, LOG10ﺗﺎﺑﻊ ﻧﻤﺎﻳﯽ ،EXPﺣﺪﺍﻗﻞ ﻭ ﺣﺪﺍﮐﺜﺮ ،MIN,MAXﺑﺎﻗﻴﻤﺎﻧﺪﻩ ﺗﻘﺴﻴﻢ
MODﻭ...
ﺗﻮﺍﺑﻊ ﻣﺎﺗﺮﻳﺴﯽDOT_PRODUCT, MATMUL, TRANSPOSE,… :
ﺗﻮﺍﺑﻊ ﺑﺴﻴﺎﺭ ﺯﻳﺎﺩ ﺩﻳﮕﺮﯼ ﻧﻴﺰ ﻭﺟﻮﺩ ﺩﺍﺭﺩ؛ ﻫﻤﭽﻨﻴﻦ ﻣﻤﮑﻦ ﺍﺳﺖ ﮐﻪ ﻣﺘﺮﺟﻢ ﺷﻤﺎ ﺗﻮﺍﺑﻊ ﺑﻴﺸﺘﺮﯼ ﺍﺯ ﺗﻮﺍﺑﻊ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺷﻤﺎ ﻗﺮﺍﺭ ﺩﻫﺪ .ﺩﺭ
ﻫﺮ ﺣﺎﻝ ﺍﮔﺮ ﺍﺣﺘﻴﺎﺝ ﺑﻪ ﺗﺎﺑﻌﯽ ﺩﺍﺷﺘﻴﺪ ،ﻗﺒﻞ ﺍﺯ ﺍﻳﻨﮑﻪ ﺧﻮﺩﺗﺎﻥ ﺑﻪ ﻓﮑﺮ ﻧﻮﺷﺘﻦ ﺁﻥ ﺑﺎﺷﻴﺪ ﻣﻄﻤﺌﻦ ﺷﻮﻳﺪ ﮐﻪ ﺁﻥ ﺗﺎﺑﻊ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ!!
ﺑﻌﻀﯽ ﺍﺯ ﺍﻳﻦ ﺗﻮﺍﺑﻊ ﺍﻧﻮﺍﻉ ﺩﺍﺩﻩ ﻫﺎ ﺭﺍ ﺑﻌﻨﻮﺍﻥ ﻭﺭﻭﺩﯼ ﺧﻮﺩ ﻣﯽ ﭘﺬﻳﺮﻧﺪ ﺍﻟﺒﺘﻪ ﺍﮔﺮ ﭼﻨﺪ ﻭﺭﻭﺩﯼ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻫﻤﻪ ﺑﺎﻳﺪ ﺍﺯ ﻳﮏ ﻧﻮﻉ ﺑﺎﺷﻨﺪ،
ﺑﻌﻀﯽ ﺍﺯ ﺍﻳﻦ ﺗﻮﺍﺑﻊ ﻧﻴﺰ ﻧﻮﻉ ﻣﺸﺨﺼﯽ ﺭﺍ ﭘﺸﺘﻴﺒﺎﻧﯽ ﻣﯽ ﮐﻨﻨﺪ .ﺑﻌﻀﯽ ﺍﺯ ﻣﺘﺮﺟﻢ ﻫﺎ ﻣﺎﻧﻨﺪ Digital Visual Fortranﺑﺮﺍﯼ ﻣﺸﺨﺺ ﮐﺮﺩﻥ ﻧﻮﻉ
ﺩﺍﺩﻩ ﻭﺭﻭﺩﯼ ﻭ ﺧﺮﻭﺟﯽ ﺍﺯ ﭘﻴﺸﻮﻧﺪ ﻭ ﭘﺴﻮﻧﺪ ﺑﺮﺍﯼ ﺗﻮﺍﺑﻊ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﺪ )ﺑﺮﺍﯼ ﺟﺰﺋﻴﺎﺕ ﺑﻪ helpﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺧﻮﺩ ﻣﺮﺍﺟﻌﻪ ﻧﻤﺎﻳﻴﺪ.(.
ﺑﺮﺍﯼ ﻣﺜﺎﻝ:
)a= sin(b
bﻣﺘﻐﻴﺮﯼ ﺍﺳﺖ ﮐﻪ ﺑﻪ ﺗﺎﺑﻊ ﺍﺭﺳﺎﻝ ﻣﯽ ﮔﺮﺩﺩ ﻭ aﺣﺎﺻﻞ ﺗﺎﺑﻊ ﺳﻴﻨﻮﺱ ﺧﻮﺍﻫﺪ ﺑﻮﺩ!
ﻓﺮﻕ ﺗﺎﺑﻊ ﻭ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﺗﻌﺪﺍﺩ ﻣﺘﻐﻴﺮﻫﺎﯼ ﺑﺎﺯﮔﺸﺘﯽ ﺁﻧﻬﺎﺳﺖ .ﺍﻟﺒﺘﻪ ﺍﻳﻦ ﺗﻨﻬﺎ ﻓﺮﻕ ﺁﻧﻬﺎ ﻧﻴﺴﺖ! ﺗﺎﺑﻊ ﻳﮏ ﻣﺘﻐﻴﺮ ﺑﺎﺯﮔﺸﺘﯽ ﺩﺍﺭﺩ ﺩﺭﺣﺎﻟﻴﮑﻪ ﺯﻳﺮ
ﺑﺮﻧﺎﻣﻪ ﻣﯽ ﺗﻮﺍﻧﺪ ﺑﻴﺶ ﺍﺯ ﻳﮏ ﻣﻘﺪﺍﺭ ﺭﺍ ﺑﺮﮔﺮﺩﺍﻧﺪ .ﺗﺎﺑﻊ ﻳﮏ ﻣﻘﺪﺍﺭ ﺭﺍ ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﻨﺪ ﺍﻣﺎ ﺣﻖ ﺗﻐﻴﻴﺮ ﻣﺘﻐﻴﺮﻫﺎﯼ ﻭﺭﻭﺩﯼ ﺭﺍ ﻧﺪﺍﺭﻧﺪ .ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ﻫﺎ
ﻣﻘﺪﺍﺭ ﺑﺎﺯﮔﺸﺘﯽ ﻧﺪﺍﺭﻧﺪ ،ﺩﺭ ﻋﻮﺽ ﺍﻣﮑﺎﻥ ﺗﻐﻴﻴﺮ ﻣﺘﻐﻴﺮﻫﺎﯼ ﺧﻮﺩ ﺭﺍ ﺩﺍﺭﻧﺪ .ﺯﻳﺮﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺑﺎ ﺩﺳﺘﻮﺭ CALLﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﺷﻮﻧﺪ.
ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺧﻮﺩﺗﺎﻥ ﺗﻮﺍﺑﻊ ﺭﺍ ﺑﻨﻮﻳﺴﻴﺪ .ﻣﻌﻤﻮ ﹰﻻ ﺑﻌﺪ ﺍﺯ ﭘﺎﻳﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺗﻮﺍﺑﻊ ﺧﻮﺩﺗﺎﻥ ﺭﺍ ﺍﺿﺎﻓﻪ ﮐﻨﻴﺪ .ﺳﺎﺧﺘﺎﺭ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﺍﺳﺖ:
…body of function
name = expression
typeﻧﻮﻉ ﺗﺎﺑﻊ )ﻧﻮﻉ ﺣﺎﺻﻞ ﺗﺎﺑﻊ( ﺭﺍ ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ .ﺣﺎﺻﻞ ﺗﺎﺑﻊ ﻣﻘﺪﺍﺭﯼ ﺍﺳﺖ ﮐﻪ ﺗﻮﺳﻂ ﺗﺎﺑﻊ ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻩ ﻣﯽ ﺷﻮﺩ .ﺍﮔﺮ ﺑﻪ ﺳﺎﺧﺘﺎﺭ ﺑﺎﻻ ﺗﻮﺟﻪ
ﮐﻨﻴﺪ ﺩﻗﻴﻘ ﹰﺎ ﺟﺎﻳﯽ ﮐﻪ ﻧﺎﻡ ﺗﺎﺑﻊ ﺑﺮﺍﺑﺮ ﻳﮏ ﻋﺒﺎﺭﺕ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ،ﺣﺎﺻﻞ ﺗﺎﺑﻊ ﺍﺳﺖ .ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﺣﺪﺍﻗﻞ ﻳﮏ ﻣﻘﺪﺍﺭ ﺧﺮﻭﺟﯽ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﻳﻌﻨﯽ ﺩﺭ
ﻣﺘﻐﻴﺮﻫﺎﯼ ﻇﺎﻫﺮﯼ ،arguments dummyﺷﺎﻣﻞ ﻫﻤﺔ ﺛﺎﺑﺖ ﻫﺎ ،ﻣﺘﻐﻴﺮﻫﺎ ﻭ ﺣﺘﯽ ﺭﻭﺍﻟﻬﺎﻱ 1ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﯽ ﺩﺭ ﺑﺪﻧﻪ ﺗﺎﺑﻊ ﺍﺳﺖ) .ﻣﻨﻈﻮﺭ ﺍﺯ
ﺭﻭﺍﻟﻬﺎ ،ﺗﻮﺍﺑﻊ ﻭ ﺯﻳﺮﺑﺮﻧﺎﻣﻪ ﻫﺎ ﻫﺴﺘﻨﺪ( .ﻭﻗﺘﯽ ﺗﺎﺑﻊ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮔﺮﺩﺩ ﺑﺎﻳﺪ ﻟﻴﺴﺘﯽ ﺍﺯ ﺍﻳﻦ ﻣﺘﻐﻴﺮﻫﺎ ﺑﻪ ﺁﻥ ﻓﺮﺳﺘﺎﺩﻩ ﺷﻮﺩ .ﻧﻮﻉ ﺍﻳﻦ ﻣﺘﻐﻴﺮﻫﺎﯼ
ﻭﺍﻗﻌﯽ ﺑﺎﻳﺪ ﺑﺎ ﻣﺘﻐﻴﺮﻫﺎﯼ ﻇﺎﻫﺮﯼ ﻣﻮﺟﻮﺩ ﺩﺭ ﺗﻌﺮﻳﻒ ﺗﺎﺑﻊ ﻳﮑﺴﺎﻥ ﺑﺎﺷﺪ ،ﺍﻣﺎ ﻧﺎﻡ ﺁﻧﻬﺎ ﻣﻬﻢ ﻧﻴﺴﺖ .ﻧﻮﻉ ﻣﺘﻐﻴﺮﻫﺎ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﺭﺳﺎﻝ ﺑﻪ ﺗﻮﺍﺑﻊ ﺗﻮﺳﻂ
ﻣﺘﺮﺟﻢ ﺑﺮﻧﺎﻣﻪ ﮐﻨﺘﺮﻝ ﻧﻤﯽ ﮔﺮﺩﺩ ﻭ ﺍﮔﺮ ﻧﻮﻉ ﻣﺘﻐﻴﺮﻫﺎﯼ ﻳﮑﺴﺎﻥ ﻧﺒﺎﺷﺪ ﺑﺎ ﺍﺷﮑﺎﻻﺕ ﻋﺠﻴﺒﯽ ﺭﻭﺑﺮﻭ ﺧﻮﺍﻫﻴﺪ ﺷﺪ!
ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺑﺮﺍﯼ ﻣﺤﺎﺳﺒﻪ ﻧﻴﺮﻭﯼ ﺟﺎﺫﺑﻪ ﺑﻴﻦ ﺩﻭ ﺟﺴﻢ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻓﺮﻣﻮﻝ ﻧﻴﻮﺗﻦ ،ﺗﺎﺑﻊ ﻧﻴﻮﺗﻦ ﺭﺍ ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﺗﻌﺮﻳﻒ ﻣﯽ ﮐﻨﻴﻢ.
Newton = -gamma*m1*m2/r**2
END Newton
ﻭﻗﺘﯽ ﺗﻮﺍﺑﻌﯽ ﮐﻪ ﺑﮑﺎﺭ ﻣﯽ ﺑﺮﻳﺪ ،ﺁﻧﭽﻨﺎﻥ ﮐﻮﺗﺎﻩ ﻫﺴﺘﻨﺪ ﮐﻪ ﺩﺭ ﻳﮏ ﺧﻂ ﺗﻤﺎﻡ ﻣﯽ ﺷﻮﻧﺪ ،ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﻳﻦ ﺳﺎﺧﺘﺎﺭ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ.
ﻼ ﺗﺎﺑﻊ ﻧﻴﻮﺗﻦ ﮐﻪ ﺩﺭ ﺑﺎﻻ ﺗﻌﺮﻳﻒ ﺷﺪ ﺭﺍ ﻣﯽ ﺗﻮﺍﻥ ﺑﺎ ﺍﻳﻦ ﺳﺎﺧﺘﺎﺭ ﺑﻪ ﺷﮑﻞ ﺯﻳﺮ ﻧﻮﺷﺖ.
ﻣﺜ ﹰ
…body of subroutine
ﺗﻤﺎﻡ ﻣﺘﻐﻴﺮﻫﺎ ﺑﺎ ﺁﺩﺭﺱ ﻓﺮﺳﺘﺎﺩﻩ ﻣﯽ ﺷﻮﻧﺪ ”) “call by referenceﻣﺎﻧﻨﺪ VAR argﺩﺭ Pascalﻳﺎ &argﺩﺭ ،(C++ﻳﻌﻨﯽ ﺁﺩﺭﺱ ﻣﺘﻐﻴﺮ ﺩﺭ
ﺣﺎﻓﻈﻪ ﺑﻪ ﺯﻳﺮﺑﺮﻧﺎﻣﻪ ﻓﺮﺳﺘﺎﺩﻩ ﻣﯽ ﺷﻮﺩ ،ﻭ ﺯﻳﺮﺑﺮﻧﺎﻣﻪ ﻣﯽ ﺗﻮﺍﻧﺪ ﻣﺘﻐﻴﺮ ﺭﺍ ﻣﺴﺘﻘﻴﻤ ﹰﺎ ﺗﻐﻴﻴﺮ ﺩﻫﺪ .ﺩﺭ ﺗﻮﺍﺑﻊ ﻧﻴﺰ ﭼﻨﻴﻦ ﺍﺳﺖ ،ﺍﻣﺎ ﻓﺮﺽ ﻣﯽ ﮔﺮﺩﺩ ﮐﻪ
ﻫﻤﺔ ﺭﻭﺍﻟﻬﺎﯼ ﺧﻮﺏ ﺑﺎﻳﺪ ﻳﮏ ﻧﻘﻄﻪ ﻭﺭﻭﺩ ﻭ ﻳﮏ ﻧﻘﻄﻪ ﺧﺮﻭﺝ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ ،ﺍﻣﺎ ﮔﺎﻫﯽ ﻻﺯﻡ ﺍﺳﺖ ﮐﻪ ﺯﻳﺮﺑﺮﻧﺎﻣﻪ ﺩﺭ ﻧﻘﻄﻪ ﺍﯼ ﺩﻳﮕﺮ ﭘﺎﻳﺎ ﻥ ﻳﺎﺑﺪ
)ﺑﺮﺍﯼ ﻣﺜﺎﻝ ﻫﻨﮕﺎﻡ ﺍﻳﺠﺎﺩ ﺧﻄﺎ( .ﺑﺮﺍﯼ ﺍﻳﻨﮑﺎﺭ ﺍﺯ ﺩﺳﺘﻮﺭ RETURNﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮔﺮﺩﺩ .ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺍﺟﺮﺍﯼ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﻣﺘﻮﻗﻒ ﮐﺮﺩﻩ ﻭ ﺑﺮﻧﺎﻣﻪ ﺭﺍ
ﭘﺲ ﺍﺯ ﭘﺎﻳﺎﻥ ﻳﮏ ﺯﻳﺮﺑﺮﻧﺎﻣﻪ ،ﻣﻘﺪﺍﺭ ﻫﻤﺔ ﻣﺘﻐﻴﺮﻫﺎﯼ ﻣﺤﻠﯽ ﺍﺯ ﺑﻴﻦ ﻣﯽ ﺭﻭﺩ .ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﺍﻳﻦ ﻣﻘﺎﺩﻳﺮ ﺩﺭ ﺍﺟﺮﺍﯼ ﺑﻌﺪﯼ ﺯﻳﺮﺑﺮﻧﺎﻣﻪ ﻣﻮﺟﻮﺩ
ﺑﺎﺷﺪ) ،(STATIC ALLOCATIONﺑﺎﻳﺪ ﺍﻳﻦ ﻣﻮﺿﻮﻉ ﺭﺍ ﺑﺮﺍﯼ ﻣﺘﺮﺟﻢ ﻣﺸﺨﺺ ﮐﻨﻴﻢ ﺗﺎ ﻣﺘﺮﺟﻢ ﺑﺪﺍﻧﺪ ﮐﻪ ﺑﺎﻳﺪ ﻣﻘﺪﺍﺭ ﻣﺘﻐﻴﺮﻫﺎ ﺭﺍ ﺫﺧﻴﺮﻩ ﮐﻨﺪ .ﺍﻳﻦ
ﻣﻮﺿﻮﻉ ﺭﺍ ﺑﺎ ﺩﺳﺘﻮﺭ SAVEﺑﻪ ﻣﺘﺮﺟﻢ ﺍﺻﻼﻉ ﻣﯽ ﺩﻫﻴﻢ .ﺳﺎﺧﺘﺎﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﻪ ﺍﻳﻦ ﺷﮑﻞ ﺍﺳﺖ:
ﻭﻗﺘﯽ ﻳﮏ ﺗﺎﺑﻊ ﺑﻌﻨﻮﺍﻥ ﻣﺘﻐﻴﺮ ﺑﻪ ﻳﮏ ﺭﻭﺍﻝ ﺩﻳﮕﺮ ﻓﺮﺳﺘﺎﺩﻩ ﻣﯽ ﺷﻮﺩ ،ﻧﻮﻉ ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﻗﺒﻞ ﺍﺯ ﺍﺭﺳﺎﻝ ﺑﻌﻨﻮﺍﻥ ﺩﺍﺧﻠﯽ ﻳﺎ ﺧﺎﺭﺟﯽ ﺗﻌﺮﻳﻒ ﮔﺮﺩﺩ .ﺍﻳﻦ
ﺑﺮﺍﯼ ﻣﺜﺎﻝ
PROGRAM func
EXTERNAL CTN
REAL::angle=0.785 !...pi/4
REAL::sine,cosine,tangent
CALL TRIG(angle,SIN,sine)
WRITE(*,*) 'SIN(0.785)=',sine
CALL TRIG(angle,COS,cosine)
WRITE(*,*) 'COS(0.785)=',cosine
CALL TRIG(angle,CTN,cotangent)
WRITE(*,*) 'COTAN(0.785)=',cotangent
READ*,r
SUBROUTINE TRIG(X,F,Y)
Y = F(X)
RETURN
FUNCTION CTN(X)
CTN = COS(X)/SIN(X)
RETURN
ﺳﺎﺧﺘﺎﺭﻫﺎﯼ ﮐﻨﺘﺮﻟﯽ
IF ﺳﺎﺧﺘﺎﺭ
ﺳﺎﺧﺘﺎﺭ. ﺩﺭ ﺍﻳﻦ ﺳﺎﺧﺘﺎﺭ ﺑﻨﺎﺑﺮ ﺣﺎﺻﻞ ﻳﮏ ﻣﻘﺎﻳﺴﻪ ﺍﺟﺮﺍﯼ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺟﺎﯼ ﺩﻳﮕﺮﯼ ﻣﻨﺘﻘﻞ ﻣﯽ ﺷﻮﺩ.ﺍﻳﻦ ﺳﺎﺧﺘﺎﺭ ﻳﮏ ﺳﺎﺧﺘﺎﺭ ﺗﺼﻤﻴﻢ ﮔﻴﺮﯼ ﺍﺳﺖ
… ELSE IF
…
ELSE
END IF
ﺑﺮﺍﯼ ﻣﺜﺎﻝ ﺑﺮﺍﯼ ﻳﺎﻓﺘﻦ ﻋﻼﻣﺖ ﻳﮏ ﻋﺪﺩ ﻣﯽ ﺗﻮﺍﻥ ﺍﺯ ﺑﺨﺶ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ:
sign=-1
sign=1
ELSE
sign=0
END IF
ﻣﯽ ﺗﻮﺍﻥ ﺑﺮﺍﯼ ﺍﺟﺮﺍﯼ ﻳﮏ IFﺑﺎ ﻳﮏ ﺩﺳﺘﻮﺭ ،ﺁﻧﺮﺍ ﺩﺭ ﻳﮏ ﺧﻂ ﺧﻼﺻﻪ ﮐﺮﺩ .ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺍﺯ ELSE ، THENﻭ END IFﺻﺮﻓﻨﻈﺮ ﻣﯽ ﺷﻮﺩ.
ﺣﻠﻘﻪ Do
ﺍﻳﻦ ﺣﻠﻘﻪ ﺑﺮﺍﯼ ﺗﮑﺮﺍﺭ ﺑﺨﺸﯽ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺖ .ﭼﻮﻥ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺣﻠﻘﻪ GOTOﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﭘﻴﺸﺮﻓﺘﻪ ﺑﺴﻴﺎﺭ ﺑﺪ ﺍﺳﺖ )ﮔﻔﺘﻪ ﻣﯽ ﺷﻮﺩ ﮐﻪ
ﺍﻣﮑﺎﻥ ﺍﺷﺘﺒﺎﻩ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺴﻴﺎﺭ ﺯﻳﺎﺩ ﺍﺳﺖ( .ﺩﺭ ﻫﺮ ﺣﺎﻝ ﺟﺎﻟﺐ ﻧﻴﺴﺖ ﮐﻪ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﺟﺮﺍﯼ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺑﺨﺶ ﺩﻳﮕﺮﯼ ﭘﺮﺵ ﮐﺮﺩ ،ﺣﺪﺍﻗﻞ ﺍﻳﻨﮑﺎﺭ
END DO label
ﺑﺮﺍﯼ ﭘﻴﺎﺩﻩ ﺳﺎﺯﯼ ﺣﻠﻘﻪ ﻫﺎﯼ ﺩﻳﮕﺮ ﻣﺜﻞ ﺣﻠﻘﻪ forﻭ whileﺩﺭ ﺯﺑﺎﻥ Cﻣﯽ ﺗﻮﺍﻥ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩ.
ﺩﺳﺘﻮﺭ EXITﺑﺮﺍﯼ ﺧﺮﻭﺝ ﺍﺯ ﺍﺟﺮﺍﯼ ﺣﻠﻘﻪ ﻭ ﺩﺳﺘﻮﺭ CYCLEﺑﺮﺍﯼ ﺗﮑﺮﺍﺭ ﺣﻠﻘﻪ ﺍﺯ ﺍﺑﺘﺪﺍ ﻣﯽ ﺑﺎﺷﺪ .ﺑﺮﺍﯼ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﻳﺪ ﺑﺮﺍﯼ ﺣﻠﻘﻪ
ﻫﺎ ﺑﺮﭼﺴﺐ ) (labelﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺖ ﺍﻳﻦ ﮐﺎﺭ ﺭﺍ ﺑﺎ ﺩﻗﺖ ﺑﺴﻴﺎﺭ ﺯﻳﺎﺩ ﺍﻧﺠﺎﻡ ﺩﻫﻴﺪ ﺯﻳﺮﺍ ﺍﻳﻨﮑﺎﺭ ﻧﻴﺰ ﻣﺎﻧﻨﺪ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳﺘﻮﺭ GOTOﺍﺳﺖ! ﺳﺎﺧﺘﺎﺭ
ﭘﻴﺸﻨﻬﺎﺩ ﻣﯽ ﮐﻨﻢ ﺗﺎ ﺟﺎﯼ ﻣﻤﮑﻦ ﺍﺯ ﺍﻳﻦ ﺩﺳﺘﻮﺭﺍﺕ ﺍﺳﺘﻔﺎﺩﻩ ﻧﮑﻨﻴﺪ ،ﭼﻮﻥ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺑﺠﺎﯼ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎ ﺗﻐﻴﻴﺮﺍﺗﯽ ﺩﺭ ﮐﺪ
ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﺑﻪ ﺷﮑﻞ ﺩﻳﮕﺮﯼ ﺑﻨﻮﻳﺴﻴﺪ .ﺑﻪ ﻣﺜﺎﻝ ﺯﻳﺮ ﺗﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ ﺑﺮﺍﯼ ﺭﻭﺷﻨﺘﺮ ﺷﺪﻥ ﺭﻭﺵ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺩﺳﺘﻮﺭﺍﺕ ﺑﻴﺎﻥ ﺷﺪﻩ ﺍﺳﺖ .ﺩﺭ ﺍﻳﻦ
ﻣﺜﺎﻝ ﺩﺍﺩﻩ ﻫﺎﯼ ﻣﻮﺟﻮﺩ ﺩﺭ ﻳﮏ ﺁﺭﺍﻳﻪ ﺑﺘﺮﺗﻴﺐ ﺟﺬﺭ ﮔﺮﻓﺘﻪ ﻭ ﻣﻌﮑﻮﺱ ﻣﯽ ﮔﺮﺩﺩ .ﻣﺸﺨﺺ ﺍﺳﺖ ﮐﻪ ﺍﻋﺪﺍﺩ ﻧﺒﺎﻳﺪ ﺻﻔﺮ ﻳﺎ ﻣﻨﻔﯽ ﺑﺎﺷﻨﺪ.
)REAL:: array(5
Outer: DO
READ(*,*) array
))Array(k)=1/SQRT(array(k
END DO inner
WRITE(*,*) array
END DO outer
ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ ﻳﮏ ﺣﻠﻘﻪ ﺑﻴﻨﻬﺎﻳﺖ ﻭﺟﻮﺩ ﺩﺍﺭﺩ )ﺣﻠﻘﻪ DOﺑﺪﻭﻥ ﻣﺤﺪﻭﺩﻳﺖ( .ﺑﺮﺍﯼ ﺧﺮﻭﺝ ﺍﺯ ﭼﻨﻴﻦ ﺣﻠﻘﻪ ﻫﺎﻳﯽ ﺍﺯ ﺩﺳﺘﻮﺭ EXITﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ
ﮔﺮﺩﺩ.
label CONTINUE
ﺩﺳﺘﻮﺭ GOTO
ﺍﺯ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺗﺎ ﺣﺪ ﺍﻣﮑﺎﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻧﮑﻨﻴﺪ .ﺳﺎﺧﺘﺎﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺴﻴﺎﺭ ﺳﺎﺩﻩ ﺍﺳﺖ.
GOTO label
ﺩﺳﺘﻮﺭ GOTOﺷﺮﻃﯽ
ﺩﺳﺘﻮﺭ STOP
ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﻣﺘﻮﻗﻒ ﮐﻨﻴﻢ ﻭ ﮐﻨﺘﺮﻝ ﺭﺍ ﺑﻪ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﺑﺎﺯﮔﺮﺩﺍﻧﻴﻢ! ﺍﺯ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮔﺮﺩﺩ .ﺳﺎﺧﺘﺎﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﻪ ﺷﮑﻞ
ﺯﻳﺮ ﺍﺳﺖ:
]’STOP [‘message
ﺁﺭﺍﻳﻪ ﻫﺎ Arrays
ﻳﮑﯽ ﺍﺯ ﻣﻬﻤﺘﺮﻳﻦ ﺳﺎﺧﺘﺎﺭﻫﺎﯼ ﺩﺍﺩﻩ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﻣﻬﻨﺪﺳﯽ ﺁﺭﺍﻳﻪ ﻫﺎ ﻫﺴﺘﻨﺪ ﻣﺨﺼﻮﺻﺎﹰ ﻭﻗﺘﯽ ﺑﺎ ﺗﻌﺪﺍﺩ ﺯﻳﺎﺩﯼ ﻋﺪﺩ ﺩﺭ ﻧﻘﺎﻁ ﻣﺨﺘﻠﻒ ﮐﺎﺭ ﻣﯽ
ﮐﻨﻴﻢ .ﺳﺎﺧﺘﺎﺭ ﺁﺭﺍﻳﻪ ﻫﺎ ﻣﺎﻧﻨﺪ ﺍﻧﻮﺍﻉ ﺩﻳﮕﺮ ﺩﺍﺩﻩ ﻫﺎ ﻣﯽ ﺑﺎﺷﺪ ﻓﻘﻂ ﺗﻌﺪﺍﺩ ﺩﺍﺩﻩ ﻫﺎ ﻣﺸﺨﺺ ﻣﯽ ﮔﺮﺩﺩ .ﺍﻟﺒﺘﻪ ﺩﺭ ﺷﺮﺍﻳﻄﯽ ﮐﻪ ﻣﯽ ﺧﻮﺍﻫﻴﻢ ﮐﻪ ﺗﻌﺪﺍﺩ
ﺑﺮﺍﯼ ﻣﺜﺎﻝ ﻓﺮﺽ ﮐﻨﻴﺪ ﮐﻪ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﺩﺍﺩﻩ ﻫﺎﯼ ﺩﻣﺎﯼ ﻧﻘﺎﻁ ﺩﺭ ﻳﮏ ﺷﺒﮑﻪ ﺭﺍ ﺫﺧﻴﺮﻩ ﮐﻨﻴﺪ ،ﻧﻮﻉ ﺩﺍﺩﻩ ﺭﺍ ﺍﻋﺪﺍﺩ ﺣﻘﻴﻘﯽ ﺩﺭ ﻧﻈﺮ ﻣﯽ ﮔﻴﺮﻳﻢ.
ﻳﺎ
ﺣﺪ ﭘﺎﻳﻴﻦ ﺁﺭﺍﻳﻪ ﺑﺼﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ ﺍﺯ ﻳﮏ ﺷﺮﻭﻉ ﻣﯽ ﺷﻮﺩ .ﺁﺭﺍﻳﻪ ﺩﺭ ﻓﺮﺗﺮﻥ 77ﻣﯽ ﺗﻮﺍﻧﺪ ﺗﺎ 7ﺑﻌﺪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺁﺭﺍﻳﻪ ﻫﺎ ﺑﺘﺮﺗﻴﺐ ﺳﺘﻮﻥ ﺩﺭ
ﺣﺎﻓﻈﻪ ﻗﺮﺍﺭ ﻣﯽ ﮔﻴﺮﻧﺪ ﻭ ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﺑﺎ ﺩﺳﺘﻮﺭ DOﺑﻪ ﺁﺭﺍﻳﻪ ﻫﺎ ﺩﺳﺘﺮﺳﯽ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﺑﻬﺘﺮ ﺍﺳﺖ ﮐﻪ ﺣﻠﻘﻪ ﺷﻤﺎﺭﻧﺪﻩ ﺳﺘﻮﻧﻬﺎ ﺩﺍﺧﻞ ﺣﻠﻘﻪ
ﺷﻤﺎﺭﻧﺪﻩ ﺳﻄﺮ ﻫﺎ ﻗﺮﺍﺭ ﮔﻴﺮﺩ )ﺑﺮﺍﯼ ﺳﺮﻋﺖ ﺩﺳﺘﺮﺳﯽ ﺑﺎﻻﺗﺮ( .ﺩﺳﺘﺮﺳﯽ ﺑﻪ ﻫﺮﻳﮏ ﺍﺯ ﺍﺟﺰﺍﺉ ﺁﺭﺍﻳﻪ ﻫﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻧﺪﻳﺴﻬﺎﯼ ﺁﻥ ﺻﻮﺭﺕ ﻣﯽ
ﮔﻴﺮﺩ ،ﺍﻟﺒﺘﻪ ﺩﺳﺘﻮﺭﺍﺗﯽ ﺩﺭ ﻓﺮﺗﺮﻥ 90ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﮐﻪ ﮐﺎﺭ ﺑﺎ ﺁﺭﺍﻳﻪ ﻫﺎ ﺭﺍ ﺳﺮﻳﻌﺘﺮ ﻭ ﮐﺎﺭﺁﻣﺪﺗﺮ ﮐﺮﺩﻩ ﺍﺳﺖ ﻭ ﺩﺭ ﺻﻮﺭﺗﯽ ﮐﻪ ﭼﻨﻴﻦ ﺩﺳﺘﻮﺭﺍﺗﯽ ﻭﺟﻮﺩ
ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺍﺯ ﺁﻧﻬﺎ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ .ﻣﺨﺼﻮﺻﹰﺎ ﺍﮔﺮ ﺑﺮﺍﯼ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﮐﺎﻣﭙﻴﻮﺗﺮﻫﺎﯼ ﭼﻨﺪ ﭘﺮﺩﺍﺯﻧﺪﻩ ﺍﯼ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﻣﯽ ﮐﻨﻴﺪ.
ﺩﺭ ﻣﺜﺎﻝ ﺑﺎﻻ ﻓﺮﺽ ﮐﻨﻴﺪ ﮐﻪ ﺩﻣﺎﯼ ﻧﻘﻄﻪ ﺍﯼ ﺑﺎ ﻃﻮﻝ 55ﻭ ﻋﺮﺽ 12ﺭﺍ ﺑﻴﺎﺑﻴﻢ ﻭ ﺩﺭ ﻣﺘﻐﻴﺮ tempﻗﺮﺍﺭ ﺩﻫﻴﻢ ﻭ ﻫﻤﭽﻨﻴﻦ ﺩﻣﺎﯼ ﻧﻘﻄﻪ 56ﻭ
)temp = temperature(55,12
temperature(56,13) = 400.0
ﺑﺮﺍﯼ ﺧﻮﺍﻧﺪﻥ ﻳﺎ ﭼﺎﭖ ﺁﺭﺍﻳﻪ ﻫﺎ ﻣﯽ ﺗﻮﺍﻥ ﺍﻧﺪﻳﺴﻬﺎ ﺭﺍ ﻧﺎﺩﻳﺪﻩ ﮔﺮﻓﺖ ﺗﺎ ﻋﻤﻞ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﻭﯼ ﮐﻞ ﺁﺭﺍﻳﻪ ﺍﻧﺠﺎﻡ ﮔﻴﺮﺩ .ﺑﺮﺍﯼ ﻣﺜﺎﻝ ﺑﺮﺍﯼ ﻧﻤﺎﻳﺶ ﮐﻞ
WRITE(*,*) temperature
ﺍﻳﻦ ﻧﻤﺎﻳﺶ ﺩﺭ ﺻﻮﺭﺗﯽ ﮐﻪ ﺗﻌﺪﺍﺩ ﺍﻋﻀﺎﺀ ﺩﺭ ﻳﮏ ﺳﻄﺮ ﺟﺎ ﻧﮕﻴﺮﺩ ﮐﻤﯽ ﮔﻴﺞ ﮐﻨﻨﺪﻩ ﺍﺳﺖ.
ﺑﺴﻴﺎﺭﯼ ﺍﺯ ﻣﻮﺍﺭﺩ ﺷﻤﺎ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﮐﻪ ﻳﮏ ﺁﺭﺍﻳﻪ ﺭﺍ ﺑﻪ ﻳﮏ ﺗﺎﺑﻊ ﺍﺭﺳﺎﻝ ﮐﻨﻴﺪ ,ﺗﻨﻬﺎ ﻣﺸﮑﻞ ﻋﺪﻡ ﺍﻃﻼﻉ ﺁ ﺭﺍﻳﻪ ﺍﺯ ﺍﻧﺪﺍﺯﻩ ﺧﻮﺩﺵ ﻣﯽ ﺑﺎﺷﺪ ,ﭘﺲ
ﺑﺎﻳﺪ ﺁﺭﺍﻳﻪ ﻓﺮﺳﺘﺎﺩﻩ ﺷﺪﻩ ﺑﻪ ﺗﺎﺑﻊ ﺩﺍﺭﺍﯼ ﺍﻧﺪﺍﺯﻩ ﺛﺎﺑﺖ ﺑﺎﺷﺪ ) (fixed-size arrayﻳﺎ ﺑﺎﻳﺪ ﺍﻧﺪﺍﺯﻩ ﺁﺭﺍﻳﻪ ﺭﺍ ﻫﻢ ﺑﻌﻨﻮﺍﻥ ﻳﮏ ﭘﺎﺭﺍﻣﺘﺮ ﺩﻳﮕﺮ ﺑﻪ ﺗﺎﺑﻊ
ﺍﺭﺳﺎﻝ ﮐﻨﻴﻢ ﺗﺎ ﻣﺒﺎﺩﺍ ﺍﺯ ﻣﺮﺯﻫﺎﯼ ﺁﺭﺍﻳﻪ ﻓﺮﺍﺗﺮ ﺑﺮﻭﻳﻢ! ﺍﮔﺮ ﺍﻧﺪﺍﺯﻩ ﺁﺭﺍﻳﻪ ﻣﺸﺨﺺ ﻧﺒﺎﺷﺪ ﻣﯽ ﺗﻮﺍﻧﻴﻢ ﺁﻥ ﺁﺭﺍﻳﻪ ﺭﺍ ﺑﺎ ﺁﺭﮔﻮﻣﺎﻥ * ﺑﺮﺍﯼ ﺁﺧﺮﻳﻦ ﭘﺎﺭﺍﻣﺘﺮ
ﺁﺭﺍﻳﻪ )ﻓﻘﻂ ﻳﮏ ﺑﻌﺪ ﺍﺯ ﺁﺭﺍﻳﻪ ﺭﺍ ﻣﯽ ﺗﻮﺍﻥ ﺑﻪ ﺍﻳﻦ ﺷﮑﻞ ﺗﻌﺮﻳﻒ ﮐﺮﺩ( ﺑﻪ ﺗﺎﺑﻊ ﺍﺭﺳﺎﻝ ﮐﻨﻴﻢ .ﺩﺭ ﻫﺮ ﺣﺎﻝ ﺑﺨﺎﻃﺮ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﮐﻪ ﻣﺘﺮﺟﻢ ﺑﺮﻧﺎﻣﻪ ﺍﺯ
ﻃﻮﻝ ﺁﺭﺍﻳﻪ ﺍﻃﻼﻉ ﻧﺨﻮﺍﻫﺪ ﺩﺍﺷﺖ ﻭ ﺷﻤﺎ ﺧﻮﺩﺗﺎﻥ ﺑﺎﻳﺪ ﻣﻄﻤﺌﻦ ﺷﻮﻳﺪ ﮐﻪ ﻓﺮﺍﺗﺮ ﺍﺯ ﻣﺤﺪﻭﺩﻩ ﺍﻋﻀﺎﺀ ﺁﺭﺍﻳﻪ ﻧﺮﻭﻳﺪ.
ﻣﺮﺍﺟﻊ:
Physics Department, State University of Michigan, September ,“to FORTRAN Introduction” ,Aloksandra Donev
ﺗﺮﺟﻤﻪ :ﻣﺤﻤﺪ ﻧﻮﺭﻭﺯﯼ" ،ﮐﺘﺎﺏ ﺁﻣﻮﺯﺷﯽ ،"Visual C++ 6ﮐﺎﻧﻮﻥ ﻧﺸﺮ ﻋﻠﻮﻡ ،ﭼﺎﭖ ﺍﻭﻝ1377 ،
ﺩﮐﺘﺮ ﺣﺒﻴﺐ ﺍﷲ ﺩﻩ ﻣﺮﺩﻩ ،ﭘﺮﻭﻳﺰ ﺳﺮﮔﻠﺰﺍﻳﯽ ،ﭼﻨﮕﻴﺰ ﺩﻝ ﺁﺭﺍ" ،ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﮐﺎﻣﭙﻴﻮﺗﺮ – ﻓﺮﺗﺮﻥ ،ﻣﻮﺳﺴﻪ ﻧﺸﺮ ﻋﻠﻮﻡ ﻧﻮﻳﻦ" ،ﭼﺎﭖ ﺩﻭﻡ 1370
]http://www.pcc.qub.ac.uk/tec/courses/f90/ohp/header_ohMIF_1.html [2