![Fortran程序設(shè)計:第一章 前言_第1頁](http://file4.renrendoc.com/view/736cdba208b031a62cb46cc2476efab8/736cdba208b031a62cb46cc2476efab81.gif)
![Fortran程序設(shè)計:第一章 前言_第2頁](http://file4.renrendoc.com/view/736cdba208b031a62cb46cc2476efab8/736cdba208b031a62cb46cc2476efab82.gif)
![Fortran程序設(shè)計:第一章 前言_第3頁](http://file4.renrendoc.com/view/736cdba208b031a62cb46cc2476efab8/736cdba208b031a62cb46cc2476efab83.gif)
![Fortran程序設(shè)計:第一章 前言_第4頁](http://file4.renrendoc.com/view/736cdba208b031a62cb46cc2476efab8/736cdba208b031a62cb46cc2476efab84.gif)
![Fortran程序設(shè)計:第一章 前言_第5頁](http://file4.renrendoc.com/view/736cdba208b031a62cb46cc2476efab8/736cdba208b031a62cb46cc2476efab85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Fortran程序設(shè)計第一部分 Fortran基礎(chǔ)知識第一章 前言本章學(xué)習(xí)目標(biāo)了解Fortran的合法字符了解Fortran語句和Fortran程序基本結(jié)構(gòu)了解可執(zhí)行和不可執(zhí)行語句之間的區(qū)別了解常量與變量的區(qū)別理解INTEGER、REAL和CHARACTER數(shù)據(jù)類型的區(qū)別掌握默認(rèn)和顯式類型說明的不同,理解為什么總該使用顯式類型說明了解Fortran賦值語句的結(jié)構(gòu)掌握在使用時整數(shù)運算和實數(shù)運算的不同了解Fortran操作符號的運算級別掌握Fortran怎么計算混合運算表達式掌握什么是內(nèi)置函數(shù)和怎樣使用它們了解怎樣使用表控輸入和輸出語句了解為什么總是使用IMPLICIT NONE語句很重要簡單地說
2、:學(xué)完本章,你應(yīng)該可以編寫除函數(shù)以外的簡單程序1.1 Fortran字符集 正如英語的學(xué)習(xí)從abc開始,F(xiàn)ortran的學(xué)習(xí)也是從字符集開始符號個數(shù)類型取值26大寫字母A-Z26小寫字母a-z10數(shù)字0-91下劃線_5算術(shù)符號+ - * / *17其它各種符號().=,$:!”%&;?和空格和C、JAVA語言不同,F(xiàn)ortran語言部分大小寫1.2 句法程序由一系列語句構(gòu)成,語句有兩種基本類型可執(zhí)行語句(executable)描述程序執(zhí)行時的行為,比如加減乘除等等不可執(zhí)行語句(unexecutable)對程序中的相應(yīng)操作進行必要的說明1.2 句法每行最長132個字符寫不下可以換行,一條語句最長
3、可以40行語句標(biāo)號現(xiàn)代Fortran程序很少用語句標(biāo)號在程序里面必須是唯一的注釋(comment)!開始到行末的字符都不會被編譯output=input1+input2 ! Sum the inputsoutput=input1 & +input2 !Sum the inputs100 output=input1 & !Sum the inputs & +input2 1.3 程序結(jié)構(gòu)PROGRAM my_first_program!Purpose:!To illustrate some of the basic feature of a Fortran program.! Declare t
4、he variables used in this program.INTEGER : i,j,k! All variables are integers!Get two values to store in variables i and jWRITE (*,*) Enter the numbers to multiply:READ (*,*) i,j! Multiply the number togetherk = i*j! Write out the result.WRITE (*,*) Result =,k!Finish up.STOPEND PROGRAM my_first_prog
5、ram例 聲明部分聲明由不可執(zhí)行語句組成位于程序開頭定義程序名和程序引用的數(shù)據(jù)以及變量類型PROGRAM語句用來指定程序的名字程序名最長可達31個字符由字母、數(shù)字和下劃線任意組合而成第一個字符必須是字母如果存在PROGRAM語句,它必須是程序的第一個語句行例程中出現(xiàn)的另外一條聲明語句是INTEGER類型聲明語句,關(guān)于這條語句在后續(xù)的課程中我會詳細介紹1.3.2 執(zhí)行部分 1.3.3終止部分例程中標(biāo)注紅色的是執(zhí)行部分,可以看到有多條執(zhí)行語句所有的這些語句我將會在后續(xù)課程中逐一詳解終止部分由STOP和END PROGRAM語句組成編譯器會自動在END PROGRAM之前生成一條ST
6、OP語句,所以,STOP語句經(jīng)常是可以省掉的1.3.4 程序書寫格式Fortran程序的基本書寫原則保留字都大寫變量用小寫常量名用大寫名字中的下劃線出現(xiàn)在兩個單詞之間書寫原則是為了閱讀的方便你可以采用自己的書寫風(fēng)格統(tǒng)一的風(fēng)格和始終保持這種風(fēng)格有助于編程效率的提高1.4 常數(shù)與變量 常數(shù)(constant,也稱常量)是一個數(shù)據(jù)對象,定義在程序執(zhí)行之前,且在程序執(zhí)行期間取值不可改變,當(dāng)編譯器編譯到常數(shù)時,它將常數(shù)放置在一個位置已知的內(nèi)存空間,無論何時程序使用該常數(shù),就引用該存儲位置 變量(variable)是一個數(shù)據(jù)對象,它的值在執(zhí)行期間發(fā)生改變,編譯器編譯遇到變量時,會給變量預(yù)留一個位置已知的存
7、儲空間,在執(zhí)行期間使用到該變量時,就引用這個存儲位置。變量可以在執(zhí)行前初始化,也可以不初始化1.4.1 起名的規(guī)則常量和變量實際上是內(nèi)存中特定位置的標(biāo)號,方便程序員記憶和使用名字可以長達31個字符(Fortran95的標(biāo)準(zhǔn))字母、數(shù)字、下劃線任意組合第一個字符必須是字母有效名:distancetimeyear2013my_book_name無效名:2monththis_is_a_very_long_variable_namemoney$_this_is_illegalPS:盡量給常量和變量起有意義的名字1.5 數(shù)據(jù)類型 Fortran內(nèi)置數(shù)據(jù)類型INTEGERREALCOMPLEXLOGICA
8、LCHARACTER還可以自定義數(shù)據(jù)類型這一章我們學(xué)習(xí)INTEGER/REAL/CHARACTER這三種1.5.1 整數(shù)類型整數(shù)類型是不含小數(shù)點的任意數(shù)據(jù)如果是正數(shù),可以帶+號也可以不帶計算機能表示的整數(shù)長度是有限的,在下一章我們會討論這個問題1.5.2 實數(shù)類型實數(shù)類型是含有小數(shù)部分的數(shù)據(jù)實數(shù)可以用指數(shù)記數(shù)法表示,+1.0E-3指數(shù)部分只能是整數(shù)用實數(shù)表示時,實數(shù)分兩成尾數(shù)和指數(shù)兩部分,計算機分配用來存放尾數(shù)的二進制位數(shù)決定了實數(shù)的精度,分配給存儲指數(shù)的位數(shù)決定了實數(shù)的表示范圍,第二章我們會詳細討論這個問題有效的實數(shù)表示:2E10.12E+1-12.0E-1無效的實數(shù)表示:
9、-12.0E 字符類型字符類型由字符串組成字符常數(shù)是由單引號或雙引號括住的字符串在單引號或雙引號之間括起來的部分稱為字符文本,字符文本可以采用任意計算機可以表示的字符,而不受Fortran字符集限制如果字符文本中含有單引號該怎么辦?方法一、如果字符串是用單引號括起來的,那么可以用連續(xù)兩個單引號表示方法二、直接用雙引號括起來類似的辦法可解決雙引號問題Im fine. Im fine. “Im fine.” “who are you?” “who are you?” “”who are you?” 1.5.4 默認(rèn)的變量類型 如果在程序中沒有聲明變量類型,那么編譯器就會用默認(rèn)的規(guī)則
10、來確定變量類型任何以字母I,J,K,L,M,N開頭的變量名假定為INTEGER其它字母開頭的變量名則假定為REAL1.5.5 顯式的變量類型變量的類型可以在程序的聲明部分顯式地聲明 INTEGER : var1 ,var2,var3,REAL : var1 ,var2,var3,CHARACTER(len=) : var1 ,var2,var3,類型聲明語句是不可執(zhí)行語句必須在PGROGRAM之后,第一條可執(zhí)行語句之前CHRACTER類型不是默認(rèn)類型,所以所有的字符變量必須顯式聲明聲明語句中的(len=)是可以省略的,如果省略,說明所定義的字符常量的長度為1,否則,len的值就是該變量的長度1
11、.5.6 常數(shù)的聲明常數(shù)的類型聲明語句也放在程序的聲明部分type, PARAMETER : name=value ,name2=value2,例如:REAL,PARAMETER : PI=3.141593 為了便于閱讀,我們約定常數(shù)名一律大寫,并且名字起的要有意義1.6 賦值語句和算術(shù)運算variable_name = expression賦值語句是執(zhí)行語句“=”并不是表示左右兩邊相等的意思,而是一個操作符(賦值符號),表示將expression的值存儲到變量variable_name所代表的存儲單元i=i+1 表示什么?expression叫表達式由常數(shù)、變量、圓括號、算術(shù)或邏輯運算符構(gòu)成
12、1.6 賦值語句和算術(shù)運算Fortran 的算術(shù)運算符有5個+-*/* 指數(shù)運算基本上它們和我們在數(shù)學(xué)里面接觸到的沒什么區(qū)別要注意的是,+和-同時也可以用來表示數(shù)的正負(fù)號運算優(yōu)先級由高到低是括號、指數(shù)運算、乘除、加減,運算順序是從左到右1.6.1 整數(shù)運算整數(shù)運算的結(jié)果始終是整型整數(shù)之間的除法會得到意外的結(jié)果3/4=04/4=15/4=16/4=18/4=29/4=2在程序中處理描述現(xiàn)實世界連續(xù)量的變量時,要避免使用整數(shù)整數(shù)主要用來計數(shù)和索引1.6.2 實數(shù)運算實數(shù)運算基本上會產(chǎn)生一個我們希望的實數(shù)結(jié)果3.0/4.0=0.754.0/4.0=1.5.0/4.0=1.256.0/4.0=1.58
13、.0/4.0=2.9.0/4.0=2.25有些實數(shù)不能被精確表示比如1/3 可能會表示為0.3333333在某些計算機上3.0*(1.0/3.0)與3.0*1.0/3.0的結(jié)果不一樣由于精度的問題,部分實數(shù)的表示會出現(xiàn)截斷,用有限位來表示該數(shù)的近似值,但是表示出來的值并不一定遵循四舍五入的原則,具體是多少不同的計算機有不同的結(jié)果。所以在進行實數(shù)的相等比較時,要慎重1.6.3 指數(shù)運算xn的表達式是x*n如果x是實數(shù),n是整數(shù)計算機會將x連乘n次,這是一個實數(shù)的乘法運算如果x是實數(shù),n是實數(shù)連乘的方法不可用計算機實際上是計算enlnx采用這種方法計算,精度比較低,運行時間長盡量用整數(shù)冪,避免采用
14、實數(shù)冪如果必須要采用實數(shù)冪,必須要注意到對于負(fù)數(shù)不能求負(fù)的實數(shù)冪(-2.0)*2.0是不合法的,編譯程序時將會提示如下錯誤1.6.4 運算符優(yōu)先級首先做圓括號內(nèi)的計算,且內(nèi)層括號優(yōu)先再從右到左做指數(shù)運算從左到右做乘法和除法運算從左到右做加法和減法運算1.6.5 混合運算實數(shù)與整數(shù)一起運算時,計算機將整數(shù)轉(zhuǎn)換為實數(shù),結(jié)果是實數(shù)這一轉(zhuǎn)換僅僅是指參與操作的兩個操作數(shù)類型分別為實數(shù)和整數(shù)而言表達式結(jié)果11+1/4121.0+1/41.031+1.0/41.25因為混合運算的情況是如此復(fù)雜,所以我們在程序中要盡量避免這種情況發(fā)生1.6.5 混合運算如果不得不進行混合運算,可以利用轉(zhuǎn)換函數(shù)顯式地在數(shù)的類型
15、之間進行轉(zhuǎn)換,然后再參與運算函數(shù)名和參數(shù)參數(shù)類型結(jié)果類型返回值INT(X)REALINTEGERx的整數(shù)部分(x被截尾)NINT(X)REALINTEGER最接近x的整數(shù)(x被四舍五入)CEILING(X)REALINTEGER大于或等于x的最小整數(shù)FLOOR(X)REALINTEGER小于或等于x的最大整數(shù)REAL(I)INTEGERREAL整數(shù)轉(zhuǎn)換為實數(shù)NINT函數(shù)會比較常用于REAL轉(zhuǎn)換到INTEGER,因為造成的誤差比較小1.7 內(nèi)置函數(shù)科學(xué)計算經(jīng)常要用到一些數(shù)學(xué)函數(shù),比如三角函數(shù)、對數(shù)、平方根等等,F(xiàn)ortran將一些常用的函數(shù)內(nèi)置到語言中,用戶可以直接調(diào)用這些函數(shù)更復(fù)雜的函數(shù)通過外
16、部函數(shù)或內(nèi)部函數(shù)實現(xiàn),課程后續(xù)會討論這個問題y=sin(theta)調(diào)用內(nèi)部函數(shù)sin()來計算theta的正弦值1.7 內(nèi)置函數(shù)部分內(nèi)置函數(shù)函數(shù)名和參數(shù)函數(shù)值參數(shù)類型結(jié)果類型說明SQRT(X)xRR求x0的平方根ABS(X)R/IR/I求x的絕對值A(chǔ)CHAR(I)ICHAR(1)返回字符I在ASCII表上對應(yīng)值SIN(X)sin(x)RRx的正弦值(x單位是弧度)COS(X)cos(x)RRx的余弦值(x單位是弧度)TAN(X)tan(x)RRx的正切值(x單位是弧度)EXP(X)exRRe的x次冪LOG(X)logexRRx的自然對數(shù),x0LOG10(X)log10 xRR以10為底的對數(shù)
17、,x0IACHAR(C)CHAR(1)I返回字符C在ASCII表上的位置MOD(A,B)R/IR/I模函數(shù)的余數(shù)MAX(A,B)R/IR/Ia,b中的最大值MIN(A,B)R/IR/Ia,b的最小值A(chǔ)SIN(X)sin-1(x)RRx的反正弦,-1x1(結(jié)果是弧度)ACOS(X)1.8 輸入與輸出輸入語句READ (*,*) input_list從鍵盤或文件中讀入一個或多個數(shù)值存儲到input_list所指定的變量中(*,*) 含有讀入操作的控制信息第一個*所代表的數(shù)域是指定從哪個輸入設(shè)備讀入數(shù)據(jù),不指定就是標(biāo)準(zhǔn)設(shè)備,一般是鍵盤第二個*所代表的數(shù)域是指明讀入數(shù)據(jù)的格式,不指定表示用自由格式輸入
18、,意味著變量列表中的變量類型決定輸入數(shù)據(jù)需要的格式每條READ指令都從輸入數(shù)據(jù)的一個新行開始讀取PROGRAM input_exampleINTEGER : i,jREAL : aCHARACTER(len=12) : charsREAD (*,*) i,j,a,charsEND PROGRAM input_example正確的輸入格式輸出語句WRITE(*,*) output_list 類似于輸入語句1.9 變量初始化在使用變量之前,對它們進行初始化如果不對變量初始化,不同的系統(tǒng)可能會給變量不同的值,導(dǎo)致你的程序完全不可控初始化有三個辦法:賦值語句READ語句類型聲明語句中初始化例:將整型變
19、量i的值初始化為10方法一:INTEGER : ii=10方法二:INTEGER : iREAD (*,*) i方法三:INTEGER : i =101.10 IMPLICIT NONEIMPLICIT NONE 出現(xiàn)在PROGRAM語句之后,類型聲明語句之前如果程序中出現(xiàn)這條語句,那么在這個程序中,F(xiàn)ortran的默認(rèn)提供輸入值的功能喪失,也就是說,所有變量必須顯式聲明! 在本課程的學(xué)習(xí)、作業(yè)、實驗、考試中,我要求所有程序編寫必須加上這條語句避免簡單的打字錯誤便于維護PROGRAM test_1REAL : time = 10.0WRITE (*,*) Time=,tmieEND PROGR
20、AM test_1例程1.2現(xiàn)在我們可以嘗試寫一個簡單的程序來計算園的面積PROGRAM area_of_circle! Caculate the area of a circle.REAL,PARAMETER : PI=3.141593REAL : area,radiusWRITE (*,*) Input number of radius:READ (*,*) radiusarea=PI*radius*radiusWRITE (*,*) area=,areaEND PROGRAM 第一章 習(xí)題1、下列常數(shù)是否有效,如有效則標(biāo)注其類型,無效則說明原因 10.0 -100 000 123E-5
21、Thats ok! -32768 3.14159 Distance = “Thats ok!” 17.877E+6 13.022、下列各組數(shù)在計算機里表示的值是否一樣 4650. 4.65E+3 -12.71 -1.27E1 0.0001 1.0E4 3.14159E0 314.159E-33、下列程序名是否有效,如無效則說明原因 new_program 3rd第一章 習(xí)題4、找出無效的變量名并說明原因 length distance 1problem when_does_school_end _ok5、找出錯誤的常量聲明并說明原因 REAL , PARAMETER BEGIN=-30 CHARACTER , PARAMETER : NAME=Rosa6、下列表達式中,合法的寫出結(jié)果,不合法的說明原因37/337+13/328/3/4(28/3)/428/(3/4)-3.*4./2.3.*(-4./2.)4.*-32+5*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國內(nèi)體育器材采購及租賃服務(wù)合同
- 2025年度辦公樓室內(nèi)外一體化裝修工程合同
- 農(nóng)田果園轉(zhuǎn)租合同范例
- 農(nóng)場注入資金合同范本
- 農(nóng)田修路流轉(zhuǎn)合同范例
- 出國勞務(wù)押金合同范本
- 建筑工程管理中供應(yīng)鏈管理的關(guān)鍵問題探討
- 供苗草坪合同范本
- 委托平面設(shè)計合同范本
- 五金加工合同范本
- 2025屆高考數(shù)學(xué)一輪專題重組卷第一部分專題十四立體幾何綜合文含解析
- 福建省泉州市南安市2024-2025學(xué)年九年級上學(xué)期期末考試語文試題(無答案)
- 2025年中國電子煙行業(yè)發(fā)展前景與投資戰(zhàn)略規(guī)劃分析報告
- 醫(yī)療器材申請物價流程
- 人教PEP版2025年春季小學(xué)英語三年級下冊教學(xué)計劃
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項考試題庫
- 華為研發(fā)部門績效考核制度及方案
- CSC資助出國博士聯(lián)合培養(yǎng)研修計劃英文-research-plan
- 2025年蛇年年度營銷日歷營銷建議【2025營銷日歷】
- 攝影入門課程-攝影基礎(chǔ)與技巧全面解析
- 司法考試2024年知識點背誦版-民法
評論
0/150
提交評論