FORTRAN学习语言_第1页
FORTRAN学习语言_第2页
FORTRAN学习语言_第3页
FORTRAN学习语言_第4页
FORTRAN学习语言_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FORTRAN 語言簡介By 陳鯨太1Outline 語言簡介、編譯器簡介Fortran 基本事項輸出、輸入及宣告格式化輸出程式結構流程控制陣列函式2Fortran 簡介全名Formula TranslatorIBM 1954 1957第一個被廣泛使用的高階語言演化1978 FORTRAN 771992 FORTRAN 901997 FORTRAN 953FORTRAN COMPILER 簡介1Visual FORTRANMicrosoft Digital Compaq HP?Microsoft Visual Studio完整的windows程式開發工具可與Visual C+相互連結使用4FO

2、RTRAN COMPILER 簡介2計中工作站提供Fortran 90 及 Fortran 77編譯方式輸出至a.outf77 f90 輸出至指定檔案(sample)f77 o samplef90 o sample5FORTRAN COMPILER 簡介3計中工作站之 Fortran只提供在 ccsun2635總數:套登入telnet .tw帳號:u9031XXX密碼:預設值是身份証字號6FORTRAN 基本事項1字元集英文字母:AZ (大小寫不分)數字:09特殊符號:冒號、等號、加、減、乘、除、底線 etc7FORTRAN 基本事項2程式碼寫作格式Fix

3、ed FormatFortran 77 的舊格式為了使用打孔卡而發明詳細規定每個字元的“用法”Free FormatFortran 90之後的新格式提供較大彈性8FORTRAN 基本事項3Fixed Format第1個字元如果是字母c,C或*(星號),表示此行是註解第1-5個字元如果這邊是數字,表示這一行的代號,否則應為空白第6個字元如果是0以外的字元,表示這一行程式會接續上一行第7-72個字元FORTRAN程式碼的寫作區域第73個字元之後不使用,超過部份會被忽略,有的編譯器會有錯誤訊息9FORTRAN 基本事項4Free Format不規定每一行第幾字元有什麼作用驚嘆號 ! 後面文字是註解每

4、行可寫作132個字元行號在每行程式最前面一行程式碼的最後如果是符號&,代表下一行程式會和這一行連接。10FORTRAN 基本事項5! Free Formatprogram mainwrite(*,*) “hello” ! 列印出hello這個字write(*,*) &“hello”wri&te(*,*) “hello”end11輸出1program mainwrite(*,*) “hello”stopend12輸出2Write(*,*)第一個參數:輸出的位置第二個參數:輸出格式相等寫法:WRITE(*,*) “HELLO”WRITE(6,*) “HELLO”WRITE(UNIT=6, FMT=

5、*) “HELLO”13輸出3關於write(*,*)自動換行印出雙引號使用連續2個雙引號WRITE(*,*) “ MY NAME IS “”CASTER”. ” FORTRAN 90 雙引號/單引號FORTRAN 77 單引號14輸出4PRINT語法:PRINT *, ”輸出字串”專門對螢幕輸出15結束程式結束程式ENDEND PROGRAMEND PROGRAM MAIN ! MAIN是主程式的名字Fortran 90 1, 2, 3Fortran 77 1 16資料型態1整數(integer)宣告方式:integer a內定範圍為232 232 17資料型態2浮點數宣告方式:real a

6、 或 real*4 a 單精確度3.4*1038 3.4*1038 有效位數67位雙精確度:real*8 a 1.79*10308有效位數1516位18資料型態3複數宣告:complex a使用:a=(x,y) !x為實部,y為虛部program maincomplex a,ba=(1.0,1.0)b=(3.0,4.3)write(*,*) “a+b=”, a+bwrite(*,*) “a-b=”, a-bwrite(*,*) “a*b=”,a*bwrite(*,*) “a/b=”, a/bstopend19資料型態4執行結果:a+b= (4.0,5.3)a-b= (-2.0,-3.30000

7、01)a*b= (-1.3000002,7.3)a/b= (0.2655511,-0.047289926)20資料型態5字元及字串Character a !宣告字元Character*10 a !宣告長度為10的字串其它寫法CHARACTER*10CHARACTER(LEN=10)CHARACTER*(10)給予初始值A=”字串內容” 21輸入指令輸入指令的基本語法如下:INTEGER AREAD (*,*) A !讀入一個整數,並存到A內READ (5,*) A !同上READ(UNIT=5, FMT=*) A !同上22格式化輸出1關於I WRITE(*,”(I5)”) 100 !用5個字

8、元的欄位來輸出一個整數 OUTPUT : _ _ 1 0 0 WRITE(*,”(I3)”) 100000 OUTPUT: * * * WRITE(*,”(I5.4)”) 3 !輸出五個字元欄位,至少輸出4位,不足補0OUTPUT: _ 0 0 0 323格式化輸出2關於FWRITE(*,”(F9.3)”) 123.45 !輸出9個字元欄位,包括小數部份3個位數OUTPUT: _ _ 1 2 3 . 4 5 0關於EWRITE(*,”(E15.7)”) 123.45 !用科學計號表示法,輸出15個字元欄位,小數部份佔7位OUTPUT : _ _ 0 . 1 2 3 4 5 0 0 E + 0

9、3 24格式化輸出3關於A WRITE (*,”(A10)”) “HELLO” !用10個字元寬度輸出字串OUTPUT: _ _ _ _ _ H E L L OWRITE (*,”(A3)”) “HELLO”OUTPUT : H E L25格式化輸出4關於B WRITE (*,”(B6.5)”) 3 !把3變成二進位輸出,字6個字元寬,至少輸出5位OUTPUT : _ 0 0 0 1 126格式化輸出5關於X WRITE (*,”(3X)”) 20 !輸出前先填3個空白字元OUTPUT: _ _ _ 2 027變數名稱取名原則1長度限制FORTRAN 77 至少6FORTRAN 90 至少31

10、不需宣告就能使用第一個字母為I, J, K, L, M, N 整數其它浮點數28變數名稱取名原則2PROGRAM MAIN I=11+22 WRITE(*,*) “11+22=”, JSTOPEND結果:11+22=0 29變數名稱取名原則3關閉內定型態的功能IMPLICIT NONE每個變數必需事先宣告位置:PROGRAM指令的下一行30常數的宣告方式一 REAL PIPARAMETER(PI=3.14159)方式二 REAL, PARAMETER :PI=3.1415931程式結構32FLOW CONTROL1IF THEN ELSE語法:IF(邏輯判斷式) THEN執行動作1ELSE執行

11、動作2END IF 33FLOW CONTROL2PROGRAM MAINIMPLICIT NONEREAL HIEGHTREAL WEIGHTREAD(*,*) HEIGHTREAD(*,*) WEIGHTIF (WEIGHT HEIGHT-100) THENWRITE(*,*) “TOO FAT!”ELSEWRITE(*,*) “UNDER CONTROL”END IFSTOPEND34FLOW CONTROL3邏輯運算式= = 相等/ = 不相等 大於 = 大於等於 小於 = 小於等於.AND. 如果兩邊式子都成立,整個條件就成立.OR.兩邊的式子只要有一個成立,整個條件就成立.NOT.

12、如果後面的式子不成立,整個式子就算成立.EQV.兩邊式子的邏輯運算結果相同時,整個式子就成立.NEQV.兩邊式子的邏輯運算結果不同時,整個式子就成立35FLOW CONTROL4FORTRAN 77的邏輯運算式.EQ. 等於.NE. 不等於.GT. 大於.GE. 大於等於.LT. 小於.LE. 小於等於36FLOW CONTROL5DO迴圈語法:DO 起始值, 終止值, 累加值執行程式碼END DO例:DO I=10, 5, -1WRITE(*,*) I END DO37FLOW CONTROL6結果:109876538FLOW CONTROL7Dowhile語法:DO WHILE (邏輯運算

13、)程式碼END DO39陣列1FORTRAN 90 陣列的宣告integer a(10) !宣告a這個陣列有10個元素integer , dimension(10) : a ! 同上,另一種作法FORTRAN 77 陣列的宣告integer adimension a(10)注意!index值從1開始算起!40陣列2使用陣列a(1)=18 INTEGER A(3) DATA A /36, 24, 36/在FORTRAN 90中,還可以省略DATA這個敘述INTEGER : A(3) = (/36, 26, 36/) 括號跟除號之間不能有空格,並且冒號不能省略。 41函式1副程式(SUBROUTI

14、NE)的使用:(可錯位)PROGRAM MAIN主程式碼END SUBROUTINE SUB1()程式碼END SUBROUTINESUBROUTINE SUB2()程式碼END SUBROUTINE42函式2特性:CALL BY REFERENCE無回傳值副程式最後一個指令通常是RETURN在主程式呼叫副程式:CALL 43函式3PROGRAM MAINIMPLICIT NONEINTEGER : A=1WRITE (*,*) “A的初始值是”, ACALL ADD(A)WRITE(*,*) “A後來的值是”, ASTOPENDSUBROUTINE ADD(NUM)IMPLICIT NONE

15、INTEGER NUMNUM = NUM + 1RETURNEND SUBROUTINE44函式4這個程式的輸出:A的初始值是 1A後來的值是 2因為呼叫了subroutine,使得A的值被改變!45函式5自訂函數(function)類似SUBROUTINE不同點呼叫前必需宣告有回傳值宣告方式Fortran 90 REAL , EXTERNAL : ADD Fortran 77REAL ADDEXTERNAL ADD46函式6PROGRAM MAINIMPLICIT NONEREAL, EXTERNAL: TRIPPLE real: A=1.38 WRITE (*,*) A的初始值是, A WRITE (*,*) 呼叫函數,TRIPPLE(A) WRITE(*,*) A後來的值是,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论