第1章基礎教材_第1頁
第1章基礎教材_第2頁
第1章基礎教材_第3頁
第1章基礎教材_第4頁
第1章基礎教材_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Fortran程序設計劉世熙關于教材劉衛(wèi)國主編,Fortran90程序設計教程,

北京郵電大學出版社彭國倫,Fortran95程序設計,中國電力出版社劉瑾等譯,Fortran95/2003程序設計(第三版),中國電力出版社WalterS.Brainerd,GuidetoFortran2003Programming,Springer內容基礎基礎知識數據類型表達式等控制結構if,case,do模塊與過程module,subroutine,function數組檢索排序字符數據結構體與派生輸入與輸出文件第一章基礎本章內容第一節(jié) 背景知識第二節(jié) 編譯環(huán)境第三節(jié) 算法第四節(jié) 流程圖第五節(jié) 數據類型第六節(jié) 變量與輸入第七節(jié) Fortran程序格式第八節(jié) 內部函數第九節(jié) 表達式與賦值語句第十節(jié) 格式化輸入輸出簡介第十一節(jié) 實例Whatisprogramming?Programmingisinstructingacomputertodosomethingforyouwiththehelpofaprogramminglanguage.Writingaprogramisonlyonepart.程序設計(Programming)是指設計、編制、調試程序的方法和過程。程序設計的步驟分析問題,確定數學模型或方法。設計算法,畫出流程圖。選擇編程工具,編寫程序。調試程序,分析輸出結果。WhyStudyProgramming?Valuableskillforscientists.Programminginitselfisanart!Itrequiredacreativeandproblemsolvingmind.Youwillfindprogrammingisfun.Enjoythefeelingofaccomplishingsomething.WhyFortran?FORTRANisFORmulaTRANslation.Designedforscientificandtechnical(engineering)computing.Goodchoiceasthefirstprogramminglanguageforsciencestudents.Highperformancecomputing(HPC).Computationalchemistry.Chemicalprocessdesign,analysis,andsimulation.Fortran的歷史最早出現的計算機高級程序設計語言FORTRANI1951年,美國IBM公司約翰·貝克斯(JohnBackus)針對匯編語言的缺點著手研究開發(fā)FORTRAN語言1954年公布1957年7月在IBM704上實現FORTRANII1958年春IBM公司發(fā)布引進了子函數等概念商業(yè)化Fortran的歷史FORTRANIII存在嚴重缺陷,沒有在計算機上實現FORTRANⅣ1962年推出沒有充分考慮兼容性,導致FORTRANII程序不能在FORTRANIV系統(tǒng)中運行FORTRAN661966年ANSI采納ANSIX3.9-1966Fortran的歷史FORTRAN771978年4月公布結構化字符類型變量ANSIX3.9-19781980年,被ISO正式確定為國際標準ISO1539-1:1980兼容FORTRAN66Fortran的歷史Fortran901991年5月ANSIX3.198-1991ISO/IEC1539-1:1991新國際標準還采納了我國計算機和信息處理標準化技術委員會程序設計分會提出的多字節(jié)字符集數據類型及相應的內部函數新特性:自由源碼形式、直接操作數組元素或整個數組、參數化數據、派生數據類型以及顯式接口Fortran的歷史Fortran951996年新特性:FORALL結構、純函數和一些新的內置過程澄清了Fortran90標準中幾個模糊點Fortran20032004年ISO/IEC1539-1:2004新特性:增強的派生數據類型、面向對象編程、Unicode字符集、增強的數據操作功能、過程指針和與C語言互操作Fortran的歷史Fortran2008ISO/IEC1539-1:2010theBLOCKconstruct,additionalintrinsicfunctionsforbitmanipulation,additionalmathematicalintrinsicfunctions,othernewintrinsicprocedures,changestoexistingintrinsicprocedures,ISOFORTRANENVadditions,miscellaneousandconveniencefeatures.FORTRAN77Fortran90第一個Fortran程序programfirstprint*,"Hello,world!"endprogramfirst三個步驟實際上是四個步驟編輯編譯(鏈接)運行如果有錯,那就要返回編輯步驟去修改代碼缺省的輸出格式在print語句后接著*號,說明采用系統(tǒng)默認的格式輸出也稱為表控輸出不同的系統(tǒng)下,不同的編譯環(huán)境下,輸出的結果(格式)可能會不同數值之間用制表位分開,字符之間不分隔用print語句輸出用引號或雙引號括起來,那就原樣輸出print*,"Hello,world!"如果是變量、常量就輸出相應的值print*,3如果是表達式則計算之后輸出結果的值print*,3+3program語句每一個Fortran程序都以program語句開始這里程序指主程序一個程序只能有一個主程序,可以有多個子程序子程序不以program開始program后接的是程序名命名需要以字母開頭,可以包含字母、數字、下劃線,最長63個字符后面所有的命名都是同樣的規(guī)則program語句可以省略,但為了程序的可讀性最好寫寫了program,則程序名不可以省略end語句每一個fortran程序單元都以end語句結尾主程序、模塊、子程序都稱為程序單元主程序用endprogram結尾模塊用endmodule結尾子例行子程序用endsubroutine結尾函數子程序用endfunction結尾end后的東西可以省略,看自己喜好而定Fortran開發(fā)環(huán)境FortranPowerStation4.0是以Fortran90為標準的Fortran語言開發(fā)工具,其集編輯、編譯、調試和運行程序為一體的圖形界面使得它具有可視化編程的優(yōu)點上機步驟從原理上講,Fortran程序上機運行要經過編輯、編譯、連接和運行四個步驟。在FORTRANPowerStation4.0環(huán)境下,具體操作如下: (1)建立一個項目(Project)。 (2)建立源程序文件。 (3)將源文件加入項目。 (4)編譯和運行。注意上機時間為15:50~17:20作業(yè)完成后利用紅蜘蛛軟件提交17:15教師將開始拷貝文件,所以上傳必須在這個時間前完成確實無法現場提交,請在課后72小時內通過e-mail提交獨立完成作業(yè),不要像“趕街”shxliu@Fortran開發(fā)環(huán)境CompaqVisualFortran6.6SilverfrostFTN95

/default.aspxForce

/G95

/GFortran

/fortran/Fortran開發(fā)環(huán)境PGIFortran

/AbsoftProFortran

/IntelVisualFortran

/NAGFortran

/nagware/NP.aspLahey/FujitsuFortran

/MSFortranPowerstation4.0綠色版鏈接:/s/1i35ebdF密碼:atgwGFortran鏈接:/s/1qWM0H0w密碼:v2xeDoitonyourphone?AndroidCCToolsIDEdroidIOSCodeToGo算法(Algorithm)Informally,analgorithmisanywell-definedcomputationalprocedurethattakessomevalue,orsetofvalues,asinputandproducessomevalue,orsetofvalues,asoutput.Analgorithmisthusasequenceofcomputationalstepsthattransformtheinputintotheoutput.算法+數據結構=程序同樣的問題,不同的人有不同的想法,也就有不同的算法,編寫出不同的程序在本課程中將不太強調算法(因為太過專業(yè)),但是你必須有分析問題、解決問題的思路算法的五個特征有窮性。算法中執(zhí)行的步驟總是有限次數的,不能無止境地執(zhí)行下去。確定性。算法中的每一步操作必須具有確切的含義,不能有二義性。有效性。算法中的每一步操作必須是可執(zhí)行的。要有數據輸入。算法中操作的對象是數據,因此應提供有關數據。要有結果輸出。算法的目的是用來解決一個給定的問題,因此應提供輸出結果,否則算法就沒有實際意義。算法的描述自然語言圖形,如N-S圖、傳統(tǒng)流程圖,圖的描述與算法語言的描述對應算法語言,即計算機語言、程序設計語言、偽代碼形式語言,用數學的方法,可以避免自然語言的二義性問題:

計算1+2+3+…+100,并輸出。programsum100implicitnoneinteger::sum,isum=0i=1dowhile(i<=100)sum=sum+ii=i+1enddoprint*,sumendprogramsum100傳統(tǒng)流程圖傳統(tǒng)流程圖是一種傳統(tǒng)的算法描述方法,它用不同的幾何圖形來代表不同性質的操作。主要優(yōu)點是直觀性強,初學者容易掌握。缺點是對流程線的使用沒有嚴格限制,如毫無限制地使流程任意轉來轉去,將使流程圖變得毫無規(guī)律,難以閱讀。端點符此符號表示轉向外部環(huán)境或從外部環(huán)境轉人。例如,程序流程的起始或結束.數據的外部使用以及起源(或終點)基本處理符號此符號表示各種處理功能。例如,執(zhí)行一個或一組確定操作,從而使信息的值。形式或位置發(fā)生變化,或者確定幾個流向中的某一個流向判斷此符號表示判斷或開關類型功能.該符號只有一個人口,但可以有若干個可選擇的出口,在對符號中定義的條件進行求值后,有一個且僅有一個出口被激活.求值結果可在表示路徑的流線附近寫出既定處理此符號表示一個已命名的處理,它由在別處已詳細說明的一個或多個操作或程序步驟所組成。例如子程序、模塊。循環(huán)界限此符號分為兩個部分,分別表示循環(huán)的開始和結束.在該符號的兩個部分中要使用同一標識符.初始.增量和終止量條件按其測試操作位置分別出現在開始符號或結束符號內?;玖骶€符號此符號表示數據流或控制流。連接符此符號表示轉向流程圖它處,或自流程圖它處轉人。它用來作為一條流線的斷點,使該流線在別處繼續(xù)下去。對應的連接符應有同一標記。數據符號(輸入/輸出符)此符號表示數據,但為規(guī)定媒體標準流向標準流向是從左到右和自上而下。箭頭的使用為了圖的清晰,可隨時在流線上使用箭頭指示流向(例如在交結點處)。當流程不遵循所規(guī)定的標準流向時,要使用箭頭來指示方向。傳統(tǒng)流程圖的繪制軟件Office自帶的自選圖形組件,可在Word、PowerPoint等入繪制流程圖VisioDiagramDesigner

http://meesoft.logicnet.dk/DiagramDesigner/EdrawMindMap

/freemind.php在線工具LovelyCharts

程序的三種基本結構1966年,Bohm和Jacopini證明了“只用三種基本的控制結構就能實現任意單入口和單出口的程序”1969年Dijkstra提出了結構化程序設計的概念順序結構、選擇結構和循環(huán)結構順序結構是最簡單的一種基本結構,依次順序執(zhí)行不同的程序塊。選擇結構(分支結構、判斷結構)根據條件滿足或不滿足而去執(zhí)行不同的程序塊。當條件P滿足時執(zhí)行S1程序塊,否則執(zhí)行S2程序塊。循環(huán)結構是指重復執(zhí)行某些操作,重復執(zhí)行的部分稱為循環(huán)體。循環(huán)結構分為當型循環(huán)和直到型循環(huán)兩種。當型循環(huán)先判斷條件是否滿足,當條件P滿足時反復執(zhí)行S程序塊,每執(zhí)行一次測試一次P,直到P不滿足為止,跳出循環(huán)體執(zhí)行它下面的基本結構。直到型循環(huán)先執(zhí)行一次循環(huán)體,再判斷條件P是否滿足,如果不滿足則反復執(zhí)行循環(huán)體,直到條件P滿足為止。三種基本程序結構的共同特點只有一個入口。只有一個出口。結構中無死語句,即結構內的每一部分都有機會被執(zhí)行。結構中無死循環(huán)。結構化定理表明,任何一個復雜問題的程序,都可以用以上三種基本結構組成。具有單入口單出口性質的基本結構之間形成順序執(zhí)行關系,使不同基本結構之間的接口關系簡單,相互依賴性少,從而呈現出清晰的結構。N-S圖由于傳統(tǒng)流程圖的缺點,1973年美國學者I.Nassi和B.Shneiderman提出了一種新的流程圖工具─N-S圖。N-S圖以三種基本結構作為構成算法的基本元素,每一種基本結構用一個矩形框來表示,而且取消了流程線,各基本結構之間保持順序執(zhí)行關系。N-S圖可以保證程序具有良好的結構,所以N-S圖又叫做結構化流程圖。N-S圖表示的三種基本結構繪制N-S圖的軟件表格軟件Structorizer

http://structorizer.fisch.lu/NSDEditor

http://diuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/teaching/studentprojects/kalt/ftp-nsd.htmlEdraw

/Nassi-Schneiderman.php算法舉例:將2000-2500年中每一年是否閏年打印出來[分析]閏年的條件是: (1)能被4整除,但不能被100整除的年份是閏年; (2)能被100整除,又能被400整除的年份是閏年。設Y為年份,算法如下: S1:2000=>Y S2:若Y不能被4整除,打印Y“不是閏年”。然后轉到S5。 S3:若Y能被4整除,不能被100整除,打印Y“是閏年”。 S4:若Y能被100整除,又能被400整除,打印Y“是閏年”,否則打印“不是閏年”。 S5:Y+1=>Y S6:當Y≤2500時,轉S2繼續(xù)執(zhí)行,若Y>2500,算法結束。用N-S流程圖表示算法優(yōu)點比文字描述直觀、形象、易于理解;比傳統(tǒng)流程圖緊湊易畫,廢除了流程線,上下順序即執(zhí)行順序;用N-S圖表示的算法都是結構化算法。程序設計方法結構化程序設計(StructureProgramming,SP)自頂向下逐步求精單入、出口模塊化對向對象程序設計(Object-OrientedProgramming,OOP)對象為主體事件驅動兩者并不相互孤立結構化程序設計的定義與特點一般認為:結構化程序設計是一種設計程序的技術,它采用自頂向下逐步求精的設計方法和單入口單出口的控制技術。特點:有一個入口、一個出口。沒有死語句(永遠執(zhí)行不到的語句),每一個語句都至少應當有一條從入口到出口的路徑通過它。沒有死循環(huán)(無限制的循環(huán))。內在數據類型(IntrinsicDataTypes)整型(integer)實型(real)復型(complex)邏輯型(logical)字符型(character)整型數據就是表示我們數學上說的整數注意,數在程序語言里是范圍的范圍由種別參數(kind,又稱類別參數)決定,-28n-1—28n-1-11:-128—1272:-32768—32767

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論