430 likes | 663 Views
計算機程式 Fortran 77 語言. 張基昇製作. 目錄. 計算機程式 課程實施方式 四化一甲乙計算機程式 課程概述 規劃 學習項目 Fortran 程式 語言講義 Fortran 程式範例. 課程實施方式. 學習態度 追求知識的理性需求與 欣然為之的感性態度。 學習策略 範例演練中精奠實基, 深邃思考中創造新機。. 課程實施方式. 課程實施 老師 規劃應用實境,鋪陳學習軌域; 勾勒思維方向,誘發學習渴望。
E N D
計算機程式Fortran 77 語言 張基昇製作
目錄 • 計算機程式課程實施方式 • 四化一甲乙計算機程式課程概述 • 規劃學習項目 • Fortran 程式語言講義 • Fortran 程式範例
課程實施方式 • 學習態度追求知識的理性需求與欣然為之的感性態度。 • 學習策略範例演練中精奠實基,深邃思考中創造新機。
課程實施方式 • 課程實施 • 老師 規劃應用實境,鋪陳學習軌域; 勾勒思維方向,誘發學習渴望。 • 學生 輸入和輸出,建立資訊傳輸的管道; 加減和乘除,完成科學工程的計算; 迴圈的應用,處理科學研究的資料; 邏輯的引導,提供計算策略的引用; 標示和說明,傳承計算程式的生命。
課程實施方式 • 課程成果 • 學生 熟悉書寫電腦的高階語言, 了解邏輯判別的應用技巧; 善用矩陣迴圈的強勁功能, 設計工程計算的應用程式。 • 老師?!%#※$¥!?。
課程實施方式 • 課堂實施方式每週之單節課程在指定教室上課,每週之雙節課於電子計算機中心電腦教室上機操作; • 『上自天文,下至地理;大自天體,小至次原子粒子。』任何問題皆可提出。
課程概述 • 主要課程內容包含電腦基本常識、程式設計簡介、資料型態、流程控制、函式、副程式、陣列與字串、檔案與應用程式設計。 • An introduction to basic computer concept, programming, data types, flow of control, functions, subroutine, arrays, strings, files, and applications
規劃學習項目 • 在 Windows 視窗作業模式與 MS-DOS 作業模式間切換 • MS-DOS 作業模式下常用10個操作指令: • dir、 doskey、 exit • cd、md、rd • type、del、copy、ren
規劃學習項目 • 用 notepad 編輯程式 • 用 GNU Compiler 編譯程式 • 用 pe2 編輯程式 • 用 MS-FORTRAN 編譯程式
規劃學習項目 • 各個範例程式輸入與執行,了解各該程式的計算目的,以及設計邏輯,共 6 類。 • (1). 8(語言指令練習):t11.for ~ t18.for • (2). 4(換算應用):t21.for ~ t24.for • (3). 3(資訊處理與排序):t31.for ~ t33.for • (4). 2(數據迴歸):fit1.for、fit2.for • (5). 1(一元二次方程式求解):squ.for • (6). 9(矩陣運算):mat1.for ~ mat9.for
規劃學習項目 • 相關數學解析法與作業 • 線性迴歸 – 最小二平方法:檢量線(校正曲線)的製作 • 聯立方程式解析 – 矩陣解析法 • 作業 • 牛頓法求解(作業):vdW EOS 之體積求解 • 半間距法求解(作業):vdW EOS 之體積求解 • 疊代法求解(作業):vdW EOS 之體積求解 • 數值微分運算(作業) • 數值積分運算(作業) • 微分方程式求解(作業)
電腦與 FORTRAN 語言 • 電腦 • 中央處理單元CPU(central processing unit) • 主記憶體Main memory:電源關閉資料不復記憶 • 次記憶體Secondary memory:電源關閉資料可記憶著,硬式磁碟機…等 • 輸入與輸出裝置input/output devices:Keyboard;CRT screens and Printers
電腦中數據與資訊的表示 • 電腦中數據與資訊的表示 • 比特bit:電腦記憶體由無數個開或關(1或0)稱為一個bit • 拜特byte:一群八個bit來表示一二進位數字稱為一個byte • 字元word:在電腦中另一更大群的bit組合稱為word • 二進位制binary number system與十進位制decimal number system • 字元數據character data、整數數據integer data、實數數據real data
電腦語言的一面觀 • 電腦可執行之運算 • 載入 load、儲存 store、 • 加 add、減 subtract、 • 乘 multiply、除 division、 • 比較 comparison。
電腦語言的一面觀 • 語言 • 機械語言:由0與1兩種符號所組合,電腦可直接接受的語言訊號。 • 組合語言:以對人類而言更有意義的文字與符號書寫,用來指揮電腦。 • 高階語言:以更接近人類的語言結構書寫,以能用來指揮電腦。 • Ada、Basic、C、COBOL、Pascal、Fortran…等。
電腦語言的一面觀 • 福傳語言Fortran language: • 數值分析Numerical analysis、 • 工程計算Technical calculations; • 超級電腦supercomputers。 • 編譯compile:高階語言皆須轉換成電腦可接受之機械語言。
程式陳述的結構 • 電腦語言程式主要由 • 可執行陳述executable statements與 • 不可執行陳述non-executable statements組成。 • 每一程式單元program unit為一完整陳述亦即為單一可分別編譯之FORTRAN碼。
程式陳述的結構 • FORTRAN77 陳述的格式可編譯為 80 個字元欄位 • 註解欄 1:C 或 * 字元 表示該列陳述為註解說明不編譯 • 陳述標號欄 :1~ 5,1~99999之數字 指定之標號(label) • 連續欄: 6 輸入任一符號 上一列無法完成一程式單元陳述於本列繼續陳述 • 陳述主體欄: 7-72 輸入宣告陳述、執行陳述與各個陳述等可編譯欄位 • 識別欄: 73-80 識別說明用
FORTRAN程式的結構 • 一完整電腦程式須包含有 • 宣告declaration、 • 可執行execution、 • 結束termination等三部份陳述。
FORTRAN程式的結構 • 宣告部份: • 變數之形式 • 字元character、 • 整數integer、 • 實數real、邏輯logical) • 陣列dimension、 • 共用common、 • 輸入read、輸出write。
FORTRAN程式的結構 • 可執行部份,依處理之問題解析,所書寫之運算式輸入與輸出資料。(數學方法) • 結束部份: • 停止執行之陳述指令 • 停止, stop • 停止,回呼叫之程式 return • 程式終止之陳述指令 end • 程式的型(style) 建立程式書寫設計之個人品味與風格。
常數與變數 • 整數常數與變數INTEGER, INTEGER*2, INTEGER*4 • 實數常數與變數REAL, REAL*4, REAL*8, DOUBLE PRECISION • 複數常數與變數COMPLEX, COMPLEX*8, COMPLEX*16, DOUBLE COMPLEX • 字元常數與變數CHARACTER[*length] • 邏輯常數與變數LOGICAL, LOGICAL*2, LOGICAL*4
指定陳述與算術計算 • 指定陳述-----Ex. variable-name = expression • 標準運算子operators • Operators+Addition-Subtraction*Multiplication/Division**Exponentiation • 整數算術-----Ex. 3/4=0 5/4=1 • 實數算術-----Ex. 3./4.=0.75 5./4.=1.25
指定陳述與算術計算 • 運算之層次 (算術計算式之計算先後次序)[1].括號;[2].指數由右至左;[3].乘除;[4].加減。(除了指數外,同層次則由左至右依序運算) • 混合模式算術-----Ex. 1+1/4=1 1.+1/4=1. 1+1./4=1.25 • 混合模式算術與指數Ex. result = y**n:(y*y*y…, n times) ; result = y**x:(y*y*y…, x times )
指定陳述與邏輯計算 • 關係運算子 rational operator • .EQ. Equal to 相等 • .NE. Not equal to 不相等 • .LT. Less than 小於 • .LE. Less than or equal to 小於等於 • .GT. Greater than 大於 • .GE. Greater than or equal to 大於 等於
指定陳述與邏輯計算 • 組合邏輯運算子combinational logic operator • L1 .NOT. L2 Logical NOT • L1 .AND. L2 Logical AND • L1 .OR. L2 Logical OR • L1 .EQV. L2 Logical equivalence • L1 .NEQV. L2 Logical non-equivalence
指定陳述與邏輯計算 • 在程式中大部份之主要的分支 (branching) 或迴圈 (looping) 結構是由邏數值所控制。
內存函數 • 電腦是以二進位制運算,所以僅可以作四種運算 • 加 add、減 subtract、乘 multiply 與除 division 之運算 • 冪次則是作多次相乘,指數可為小數 • 其他函數則以泰勒展開式或其他展開式做計算,電腦內建以函數供呼叫
輸入與輸出的格式 • 輸入與輸出的格式分為兩類 • 自由格式free format • 格式化formated • 自由格式輸入與輸出 • read(*,*) variable1,variable2,… • write(*,*) variable1, variable2,…
輸入與輸出的格式 • 格式化的描述子(1) • I rIw I 輸入或輸出之資料型態為整數 r 重覆之次數,r = 1 時可不用輸入w 佔據之總位數 • F rFw.d F 輸入或輸出之資料型態為實數 d小數位數 • E rEw.d E 輸入或輸出之資料型態為科學符號型態之含指數實數 • D rDw.d D 倍準數之輸入或輸出
輸入與輸出的格式 • 格式化的描述子(2) • X wX X 輸出資料時各資料項(data item) 與資料項間設定 w 空格數 • H wHh1..hw H 輸出設定於後之文數資料(h1h2…hw) • A rAw A 輸入與輸出字元資料 • L rLw L 輸出為邏輯型態資料
輸入與輸出的格式 • 格式化的描述子(3) • T Tw TRw TLw T 報表定位設定 TRw自現在位置向右移w個位置TLw自現在位置向左移w個位置 • / / 設定跳行( ) • r(…,…) r 重覆次數 • ' ' 'h1h2…hn'文數資料(h1h2…hn)直接輸出
t11.for t12.for t13.for t14.for t15.for t16.for t17.for t18.for t21.for Fortran 程式範例
t11.for • c t11.f • write(*,*)3+4 • stop • end
t12.for • c t12.f • a=3. • b=4. • write(*,*)a+b • stop • end
t13.for • c t13.f • a=3. • b=4. • sum=a+b • write(*,*) 'sum of a and b equal to ',sum • stop • end
t14.for • c t14.f • a=3. • b=4. • sum=a+b • write(*,1000)sum • 1000 format (5x,'sum of a and b equal to ',f10.2) • stop • end
t15.for • c t15.f • write(*,*)'input a and b value' • read(*,*)a,b • sum=a+b • write(*,1000)sum • 1000 format (5x,'sum of a and b equal to ',e12.5) • stop • end
t16.for • write(*,*)'input a and b value' • write(*,*)' a =' • read(*,*)a • write(*,*)' b =' • read(*,*)b • sum=a+b • write(*,1000)sum • 1000 format(5x,'sum of a&and b equal to ',e12.5) • stop • end
t17.for • open(1,file='t17d.dat',status='old') • open(11,file='t17.prn',status='new') • read(1,*)a,b • sum=a+b • write(11,1000)sum • 1000 format(5x,'Sum of a and b equal to ',f12.5) • stop • end
t18.for • open(1,file='t17d.dat',status='old') • open(6,file='t18.prn',status='new') • read(1,1001)a,b • 1001 format(2f10.5) • sum=a+b • write(6,1000)sum • 1000 format (5x,'sum of a and b equal to ',e12.5) • stop • end
t21.for • 100 write(*,*)' read the temperature in degrees of f' • write(*,1001) • 1001 format(5x,'if f = 9999 then stop',/,5x,'f=') • read(*,*)f • if (f .ge. 9999)stop • c=(f-32.)*5./9. • write(*,1000)f,c • 1000 format (2x,'The temperature of (',f6.2,') degree f is equal’, • &’ to (',f6.2,') degree c',//) • go to 100 • stop • end
您可已曉得! • 劇情如何發展! • 敬請期待!