




已閱讀5頁,還剩382頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Fortran語言 Fortran77結(jié)構(gòu)化程序設(shè)計 普通高校計算機(jī)基礎(chǔ)教學(xué)課程 2020 3 24 2 說明第一章算法 略 第二章計算機(jī)和計算機(jī)程序 略 2020 3 24 3 第三章Fortran語言程序設(shè)計初步 2020 3 24 4 3 1Fortran語言的發(fā)展概況 FORmulaTRANslator公式翻譯器Fortran語言是一種適合于科學(xué)和工程計算問題的程序設(shè)計語言 也是計算機(jī)高級語言發(fā)展史上使用最早的一種程序設(shè)計語言 2020 3 24 5 3 1Fortran語言的發(fā)展概況 Fortran語言的發(fā)展過程 1951年由約翰 貝克斯等人開始研究Fortran語言 1957年第一個Fortran程序在IBM704機(jī)上運行 1958和1962年先后推出Fortran 和Fortran 1966和1978年先后頒布Fortran66和Fortran77 1991年頒布了Fortran90 現(xiàn)在已經(jīng)有了Fortran95 Fortran2003 2020 3 24 6 Fortran語言的特征 Fortran語言的最大特性是接近數(shù)學(xué)公式的自然描述 在計算機(jī)里具有很高的執(zhí)行效率 易學(xué) 語法嚴(yán)謹(jǐn) 可以直接對矩陣和復(fù)數(shù)進(jìn)行運算 自誕生以來廣泛地應(yīng)用于數(shù)值計算領(lǐng)域 積累了大量高效而可靠的源程序 很多專用的大型數(shù)值運算計算機(jī)針對Fortran做了優(yōu)化 廣泛地應(yīng)用于并行計算和高性能計算領(lǐng)域 Fortran90 Fortran95 Fortran2003的相繼推出使Fortran語言具備了現(xiàn)代高級編程語言的一些特性 2020 3 24 7 3 2簡單的Fortran程序分析 例1 求一元二次方程x2 3x 5 6 0的根 并打印結(jié)果 利用公式 這里 a 1 b 3 c 5 6 2020 3 24 8 3 2簡單的Fortran程序分析 編程如下 ctherootsofthequadraticequationa 1 0b 3 0c 5 6x1 b sqrt b b 4 0 a c 2 0 a x2 b sqrt b b 4 0 a c 2 0 a write 100 x1 x2100format 1x x1 f6 2 x2 f6 2 end 2020 3 24 9 3 2簡單的Fortran程序分析 執(zhí)行結(jié)果 x1 1 30 x2 4 30 例2 試求3 6 9 的值 編程如下 2020 3 24 10 3 2簡單的Fortran程序分析 主程序 子程序 cmainprogramcsubprogramj k 3 functionk n l k 6 k 1m k 9 i 2write j l m5if i le n thenendk k ii i 1執(zhí)行結(jié)果 goto56720362880endifreturnend 2020 3 24 11 3 2簡單的Fortran程序分析 Fortran程序的基本結(jié)構(gòu) 一個Fortran源程序由一個或多個程序單位組成 每個程序單位以 end 語句結(jié)束 每個程序單位包括若干行語句行 執(zhí)行語句和非執(zhí)行語句行 非語句行 注釋行 語句前可不設(shè)標(biāo)號 也可根據(jù)需要設(shè)標(biāo)號 各類語句在程序單位中的位置有一定規(guī)則 程序必須按規(guī)定格式書寫 2020 3 24 12 3 3Fortran源程序的書寫格式 Fortran77源程序必須按以下格式書寫 每行只能在80列內(nèi)書寫 并把80列分為4個區(qū) 1 5列 標(biāo)號區(qū) 1 5位無符號整數(shù) 第1列為 或 c 時 為注釋行 第6列 續(xù)行標(biāo)志區(qū) 非空格或非零字符 最多19個續(xù)行 7 72列 語句區(qū) 書寫語句 一行只能寫一條語句 73 80列 語句注釋區(qū) 一般作編號注釋 2020 3 24 13 3 4Fortran程序的編輯與運行 FortranPowerStation4 0集成開發(fā)環(huán)境簡介 2020 3 24 14 3 4Fortran程序的編輯與運行 一 FortranPowerStation4 0的啟動選 開始 程序 FortranPowerStation4 0 MicrosoftDeveloperStudio 二 創(chuàng)建項目工作間選 File New ProjectWorkspace ConsoleApplication 并輸入項目工作間名稱 如 aaa 和存放項目工作間的位置或路徑 如 c for Create 2020 3 24 15 3 4Fortran程序的編輯與運行 三 給項目工作間添加和編輯文件打開指定的項目工作間 選 Insert FileintoProject 輸入要添加的文件名 如 st01 for Add 然后按Fortran程序的書寫規(guī)則編輯程序 四 編譯項目工作間中的文件打開指定的文件 選 Build Compilest01 for 五 連編項目文件選 Build Buildaaa exe 六 運行項目文件選 Build Executeaaa exe 顯示程序執(zhí)行結(jié)果 2020 3 24 16 3 4Fortran程序的編輯與運行 注 若Fortran程序是由一個主程序文件和若干個子程序文件組成 則應(yīng)將各文件添加到同一項目工作間 分別進(jìn)行編譯 然后連編和運行項目文件 七 打開項目文件選 File Open 在打開對話框文件類型下拉列表中選 ProjectWorkspace mdp 然后選項目工作間文件夾中的項目文件 2020 3 24 17 3 5常量 常量 在程序執(zhí)行期間其值固定不變的量 Fortran處理六種類型的常量 整型常量 Integer 實型常量 Real 雙精度常量 Doubleprecision 復(fù)型常量 Complex 邏輯型常量 Logical 字符型常量 Character 2020 3 24 18 3 5常量 3 5 1整型常量包括正 負(fù)整數(shù)和零 例 5 13 0 說明 在 16位 微機(jī)中 整數(shù)的取值范圍為 215 215 1 32768 32767 在 32位 微機(jī)中 整數(shù)的取值范圍為 231 231 1 2147483648 2147483647 2020 3 24 19 3 5常量 3 5 2實型常量 有二種表示形式 小數(shù)形式例 15 8 21 05 14 0 14 17 0 0 指數(shù)形式 通常表示較大或較小的數(shù) 例 100000000 1 0E 80 0000125 1 25E 05數(shù)字部分指數(shù)部分 2020 3 24 20 3 5常量 說明 一個數(shù)值用指數(shù)形式表示時有兩種表達(dá)方式 一個基本實數(shù)后面跟指數(shù)部分 例 0 876 8 76E 1 2589 4 2 5894E 3 一個整數(shù)后面跟指數(shù)部分 例 0 876 876E 3 2589 4 25894E 1 2020 3 24 21 3 5常量 同一個數(shù)值可用不同的指數(shù)形式表示 例 0 876 8 76E 1 87 6E 2 876E 3 計算機(jī)在輸出時 按標(biāo)準(zhǔn)化指數(shù)形式輸出 例 0 28 2 800000E 01 59 58E 12 5 958000E 13即數(shù)字部分大于1 且小數(shù)點前只有一位非零數(shù)字的指數(shù)輸出形式 在微機(jī)中 一般用四個字節(jié)存放一個實數(shù) 其取值范圍為 10 75 1075 超出此范圍時為 溢出 錯誤 2020 3 24 22 3 5常量 下列形式為不合法的指數(shù)形式 單獨的小數(shù)點和單獨的指數(shù)部分 例 E5 E10 指數(shù)部分只能是整數(shù) 不能帶小數(shù)點 例 8E0 5 12 3E1 5 2020 3 24 23 3 6變量 變量 在程序執(zhí)行期間其值可以改變的量 3 6 1變量的概念Fortran為每一個變量分配一個相應(yīng)的存儲單元 每個變量在每個時刻只能有一個確定的值 例 x 4 5xx 8 0 x注 在程序中用到的變量都必須要有確定的值 4 5 8 0 2020 3 24 24 3 6變量 3 6 2變量名變量名 標(biāo)識一個變量所用的名字 命名規(guī)則 變量名的第一個字符必須是字母 在第一個字符后可跟1 5個字母或數(shù)字 例 x m1 total k123 2020 3 24 25 3 6變量 注意幾點 變量名不區(qū)分大小寫字母 例 TOTAL Total total代表同一變量 變量名中的空格不起作用 例 abc abc abc abc代表同一變量 變量名盡量做到 見名知義 AVER SUM Imax 允許變量名與語言中具有特定含義的字 保留字 同名 例 sin read open end 建議不要使用fortran中具有特定含義的字作變量名 2020 3 24 26 3 6變量 3 6 3變量的類型Fortran能處理各種類型的變量 不同類型的變量用來存放不同類型的數(shù)據(jù) 變量類型的說明 三種方式 隱含說明即以I j k l m n開頭的變量為整型變量 以其它字母開頭的變量為實型變量 I N規(guī)則 例 imax m5 number 為整型變量v h2 aver 為實型變量 2020 3 24 27 3 6變量 顯式說明即用類型說明語句指定變量的類型 如 Integer 說明變量為整型變量Real 說明變量為實型變量Doubleprecision 說明變量為雙精度變量Complex 說明變量為復(fù)型變量Logical 說明變量為邏輯型變量Character 說明變量為字符型變量 2020 3 24 28 3 6變量 如 Integerabc xyzrealimax k3logicala1 kpz 用implicit語句說明即說明用某一字母開頭的變量為指定的類型 例 implicitinteger a b real k implicitinteger x z 2020 3 24 29 3 6變量 三種類型說明的優(yōu)先級 高類型說明語句 顯式說明 implicit語句說明低 I N規(guī)則 2020 3 24 30 3 7Fortran內(nèi)部函數(shù) 在編制Fortran程序時 經(jīng)常要用到一些基本的數(shù)學(xué)函數(shù) 如三角函數(shù) 指數(shù)函數(shù) 對數(shù)函數(shù)等 為方便用戶 Fortran編譯系統(tǒng)已提供了這些函數(shù)的計算程序 需要時即可調(diào)用 Fortran內(nèi)部函數(shù)調(diào)用格式 函數(shù)名 自變量 2020 3 24 31 3 7Fortran內(nèi)部函數(shù) 如 sin 90 3 14159 180 1 0sqrt 9 0 3 0abs 5 6 5 6int 6 75 6exp 3 0 20 085540Fortran77全部內(nèi)部函數(shù)見附錄 2020 3 24 32 3 7Fortran內(nèi)部函數(shù) 注意幾點 函數(shù)自變量 參數(shù) 必須用括號括起來 例 sinx cosx sin x cos x 函數(shù)自變量可以是常量 變量或表達(dá)式 例 exp 3 0 sin x cos x 有些函數(shù)的類型是由自變量的類型確定的 例 mod 8 0 3 0 2 0mod 8 3 2 三角函數(shù)的角度單位是 弧度 而不是 度 函數(shù)名分為 通用名 和 專用名 內(nèi)部函數(shù)名一般用 通用名 2020 3 24 33 3 8Fortran算術(shù)表達(dá)式 Fortran77提供了四種表達(dá)式 算術(shù)表達(dá)式關(guān)系表達(dá)式邏輯表達(dá)式字符表達(dá)式算術(shù)表達(dá)式 將各運算元素 常量 變量 函數(shù)和數(shù)組等 用算術(shù)運算符連接起來的一個有值的式子 2020 3 24 34 3 8Fortran算術(shù)表達(dá)式 一 算術(shù)運算符及其優(yōu)先級 算術(shù)運算符 五種 加 減 乘 除 乘方 算術(shù)運算符的優(yōu)先級括號 函數(shù) 乘方 乘 除 加 減注 同級運算 先左后右 連續(xù)乘方時 先右后左 2020 3 24 35 3 8Fortran算術(shù)表達(dá)式 例 3 5 6 0 8 5 4 2 sin x 3 5 6 0 8 5 42 sinxx y z x y z xyz x y z xy z有了算術(shù)表達(dá)式概念之后 我們就可以將 數(shù)學(xué)運算式 Fortran算術(shù)表達(dá)式 2020 3 24 36 3 8Fortran算術(shù)表達(dá)式 二 算術(shù)表達(dá)式書寫規(guī)則 表達(dá)式中的各運算元素之間必須用運算符分隔 例 xyz x y z2 x y 2 x y 作任何運算的表達(dá)式只能寫在一行 例 a b c d a b c d 2020 3 24 37 3 8Fortran算術(shù)表達(dá)式 兩個運算符不能緊鄰 例 a b a b a b 表達(dá)式一律用小括號 例 a x b y c a x b y c 2020 3 24 38 3 8Fortran算術(shù)表達(dá)式 三 表達(dá)式求值中的類型問題 同類型量運算的結(jié)果 仍為原類型 例 4 5 20 4 0 5 0 20 06 0 4 0 1 5 6 4 1 1 5 不同類型量運算時 先將低級類型 整型 轉(zhuǎn)換為高級類型 實型 然后再按同類型量進(jìn)行運算 例 2 5 4 10 0 10 2 0 3 2 0 2 0 2 0 8 0 屬同類量運算 2020 3 24 39 3 8Fortran算術(shù)表達(dá)式 四 運算中的誤差問題 整數(shù)量運算沒有誤差 實型量由于有效位數(shù)的限制 運算時會出現(xiàn)誤差例1 1 0 3 0 3 0 0 9999999 1 0 1 0 3 0 0 3333333例2 X 1E30Y 1E30Z 1 0 X Y Z X Y Z 2020 3 24 40 3 9賦值語句 Fortran提供三類賦值語句 算術(shù)賦值語句邏輯賦值語句字符賦值語句一 算術(shù)賦值語句一般格式V e功能 把賦值號右邊表達(dá)式的值 賦給賦值號左邊的變量或數(shù)組元素 例 S 3 14159 r 2 2020 3 24 41 3 9賦值語句 二 算術(shù)賦值語句中的類型轉(zhuǎn)換問題 賦值號兩邊類型一致時 直接賦值 例 k 355 賦值號兩邊類型不一致時 先計算 再轉(zhuǎn)換 最后賦值 例 y1 6 2 y1的值為12 0 Imax 3 6 2 imax的值為7 7 2 7 2020 3 24 42 3 9賦值語句 注意幾點 賦值號左邊只能是變量或數(shù)組元素 不能為帶運算符的表達(dá)式 例 3 a 6 x sin x 一個賦值語句只能給一個變量或數(shù)組元素賦值 例 a b c d 3 5 一個賦值語句執(zhí)行后 賦值號左邊變量的原值被右邊表達(dá)式的值取代 例 x 1 0 x x 1 0 x的值為2 0 2020 3 24 43 3 10簡單的輸出語句 用戶編制的程序必須要有輸出語句 把結(jié)果顯示或打印出來 Fortran提供了三種輸出方式 表控格式輸出 標(biāo)準(zhǔn)或固定格式輸出 指定格式輸出 無格式輸出 二進(jìn)制形式 適應(yīng)磁盤文件 一 表控格式輸出按Fortran編譯系統(tǒng)隱含規(guī)定的格式輸出 即系統(tǒng)根據(jù)輸出數(shù)據(jù)的不同類型 自動給出相應(yīng)的輸出格式 2020 3 24 44 3 10簡單的輸出語句 二 表控格式輸出語句一般格式 print 輸出表列 write 輸出表列 例1 print 56 8 125或write 56 8 125例2 print a b c或write a b c 2020 3 24 45 3 10簡單的輸出語句 例3 x 12 5y 90 5z x yprint x yprint z zend運行結(jié)果 12 50000090 500000Z 103 000000 2020 3 24 46 3 10簡單的輸出語句 整數(shù)的表控格式輸出規(guī)定 每個整數(shù)占12列 數(shù)據(jù)打印在右端 左補空格 例 print 123 1128輸出結(jié)果 123 1128 2020 3 24 47 3 10簡單的輸出語句 實數(shù)的表控格式輸出規(guī)定 每個實數(shù)占16列 數(shù)據(jù)打印在右端 左補空格 例 print 15 4 321 45輸出結(jié)果 15 400000 321 450000 2020 3 24 48 3 10簡單的輸出語句 當(dāng)實數(shù)值的絕對值 107或 1時 按標(biāo)準(zhǔn)的指數(shù)形式輸出 例 print 10000000 0 98輸出結(jié)果 1 000000E 07 9 800000E 01 2020 3 24 49 3 11簡單的輸入語句 Fortran提供了三種輸入方式 表控格式輸入 自由格式輸入 指定格式輸入 無格式輸入一 表控格式輸入表控格式輸入 根據(jù)變量的數(shù)據(jù)類型輸入相應(yīng)的數(shù)據(jù)形式 數(shù)據(jù)間以逗號或空格分隔的輸入方式 2020 3 24 50 3 11簡單的輸入語句 二 表控格式輸入語句一般格式 read 輸入表列 read 輸入表列 例1 read a b 若a 14 7 b 30 0 鍵盤輸入 14 7 30 0 2020 3 24 51 3 11簡單的輸入語句 例2 read x k 若x 4 5 k 200 鍵盤輸入 4 5 200 例3 read x y z 若x 1 5 y 2 5 z 3 5 read i j 若i 5 j 10 鍵盤輸入 1 5 2 5 3 5 5 10 2020 3 24 52 3 11簡單的輸入語句 注意幾點 輸入數(shù)據(jù)的個數(shù)不得少于read語句中變量的個數(shù) 但多余的數(shù)據(jù)也不起作用 例 read x y z 若x 1 5 y 2 5 z 3 5 鍵盤輸入 1 5 2 5 3 5 1 5 2 5 3 5 5 2 6 0 最后兩個數(shù)被忽略 1 5 2 5 計算機(jī)將等待用戶繼續(xù)輸入數(shù)據(jù) 2020 3 24 53 3 11簡單的輸入語句 注意幾點 一個read語句可以分多行輸入 但每一個read語句必須從新的一行輸入 例 read x y z 若x 1 5 y 2 5 z 3 5 read i j 若i 5 j 10 鍵盤輸入 1 5 2 5 3 5 5 10 若鍵盤輸入 1 5 2 5 3 5 5 10 錯 2020 3 24 54 3 11簡單的輸入語句 在輸入數(shù)據(jù)時若出現(xiàn) 則終止對此read語句的輸入 例 read x y z鍵盤輸入 1 5 2 5 變量z的值為原值或為零 2020 3 24 55 3 12參數(shù)語句 parameter語句 一 parameter語句的功能為常量命名 即用一個符號代表一個常量 二 parameter語句一般形式Parameter p1 c1 p2 c2 pn cn 其中 pn 符號常量 cn 常量 2020 3 24 56 3 12參數(shù)語句 parameter語句 例 求半徑為0 5m的圓面積和圓周長 編程如下 parameter r 0 5 pi 3 14159 s pi r 2h 2 0 pi rprint s hend 2020 3 24 57 3 12參數(shù)語句 parameter語句 注意幾點 參數(shù)語句必須寫在所有可執(zhí)行語句之前 符號常量的命名規(guī)則及類型與變量相同 并遵循 I N規(guī)則 程序中不能給符號常量再賦值 2020 3 24 58 3 13pause語句 stop語句 end語句 一 pause語句 一般形式Pause n 注 n為1 5位正整數(shù)或字符常量 功能暫停程序的執(zhí)行 一個程序單位可以有多個pause語句 2020 3 24 59 3 13pause語句 stop語句 end語句 例 parameter r 0 5 pi 3 14159 s pi r 2h 2 0 pi rpause 打印面積和周長 print s hend 2020 3 24 60 3 13pause語句 stop語句 end語句 二 stop語句 一般形式stop n 注 n為1 5位正整數(shù)或字符常量 功能終止程序的執(zhí)行 一個程序單位可以有多個stop語句 2020 3 24 61 3 13pause語句 stop語句 end語句 三 end語句 一般形式end 功能對主程序 終止程序的執(zhí)行和作為程序單位的結(jié)束標(biāo)志 對子程序 返回調(diào)用程序和作為程序單位的結(jié)束標(biāo)志 一個程序單位只能有一個end語句 2020 3 24 62 課后練習(xí)題 P75 76 第五 八 十一題 2020 3 24 63 第四章邏輯運算和選擇結(jié)構(gòu) 2020 3 24 64 計算機(jī)程序 程序設(shè)計的基本方法 計算機(jī)解決問題所需要的一系列代碼化指令序列 計算機(jī)程序 程序 數(shù)據(jù)結(jié)構(gòu) 算法即 程序就是在數(shù)據(jù)的某些特定的表示方式和結(jié)構(gòu)的基礎(chǔ)上 對抽象算法的具體描述 上述公式可擴(kuò)充為 程序 數(shù)據(jù)結(jié)構(gòu) 算法 程序設(shè)計方法 語言工具 2020 3 24 65 所謂面向過程的程序設(shè)計 是指利用面向過程的語言工具 如Basic Pascal Fortran和C等 進(jìn)行程序開發(fā)的各項活動 程序設(shè)計的基本方法 面向過程的程序設(shè)計 優(yōu)點 編程簡單 結(jié)構(gòu)性強(qiáng) 可讀性好 程序執(zhí)行時序特征明顯 遵循這種結(jié)構(gòu)的程序只有一個入口和一個出口 缺點 存在數(shù)據(jù)與程序模塊的分離和程序的可重用性差等問題 2020 3 24 66 程序設(shè)計的基本方法 結(jié)構(gòu)化程序設(shè)計方法 結(jié)構(gòu)化編碼在結(jié)構(gòu)化程序設(shè)計中 任何復(fù)雜的算法 都可以由三種基本結(jié)構(gòu)組成 在構(gòu)造算法時 也僅以三種基本結(jié)構(gòu)作為基本單元 遵循這種結(jié)構(gòu)的程序只有一個輸入口和一個輸出口 模塊化設(shè)計將一個復(fù)雜問題的程序分為若干個程序模塊 每個模塊完成一項特定功能 其中有一個主模塊和若干個子模塊 主模塊控制各個子模塊來實現(xiàn)整個程序的功能 自頂向下 逐步細(xì)化 2020 3 24 67 程序設(shè)計的基本方法 面向?qū)ο蟮某绦蛟O(shè)計 面向?qū)ο蟮某绦蛟O(shè)計是一種新的程序設(shè)計范型 它將一些新的理念和結(jié)構(gòu)化程序設(shè)計中好的思想相融合 提供了一種全新的程序設(shè)計方法 2020 3 24 68 4 1算法及其表示方法 一 算法的概念算法 解決某一問題所采取的方法和步驟 計算機(jī)算法 計算機(jī)能夠執(zhí)行的算法 計算機(jī)算法的特征 有窮性 操作步驟是有限的 確定性 方法步驟是明確的 有效性 方法是正確的 步驟是完整的 必須有輸入和輸出 取得必要的信息 給出正確的結(jié)果 2020 3 24 69 4 1算法及其表示方法 Fortran是結(jié)構(gòu)化程序設(shè)計語言 每個程序單位可由三種基本結(jié)構(gòu)組成 順序結(jié)構(gòu) 分支選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu)實踐證明 任何復(fù)雜的問題都可以用這三種基本結(jié)構(gòu)來描述 2020 3 24 70 4 1算法及其表示方法 二 算法的表示用N S流程圖表示 由幾種功能框組合而成 矩形框 用于表示順序結(jié)構(gòu) 如 若先執(zhí)行語句A 再執(zhí)行語句B A B 2020 3 24 71 4 1算法及其表示方法 例 若a 1 5 b 4 5 求a b的平方 畫N S圖 編程 A 1 5B 4 5C a b 2Print cend 1 5 a 4 5 b a b 2 c 打印c 結(jié)束 2020 3 24 72 4 1算法及其表示方法 三角框 用于表示分支選擇結(jié)構(gòu) 如 若P為條件 當(dāng)P成立執(zhí)行語句A 否則執(zhí)行語句B 2020 3 24 73 4 1算法及其表示方法 L形框 用于表示循環(huán)結(jié)構(gòu) 當(dāng)型循環(huán) P為條件 A循環(huán)體 如 若條件P成立 則執(zhí)行循環(huán)體A 否則跳出循環(huán)體 2020 3 24 74 4 1算法及其表示方法 直到型循環(huán) P為條件 A循環(huán)體 如 首先執(zhí)行循環(huán)體A 若條件P不成立繼續(xù)執(zhí)行循環(huán)體A 直到條件P成立為止 2020 3 24 75 4 2關(guān)系表達(dá)式 關(guān)系表達(dá)式是構(gòu)成選擇結(jié)構(gòu)判斷條件的基本式子 它也是一種最簡單的邏輯表達(dá)式 一 關(guān)系運算符 P80表4 1 gt 大于 ge 大于等于 eq 等于 lt 小于 le 小于等于 ne 不等于 2020 3 24 76 4 2關(guān)系表達(dá)式 二 關(guān)系表達(dá)式的一般形式 算術(shù)量 關(guān)系運算符 算術(shù)量 即 關(guān)系表達(dá)式是由關(guān)系運算符將兩個算術(shù)量連接起來的式子 關(guān)系表達(dá)式的運算元素是算術(shù)量 結(jié)果是邏輯量 真 True 或假 False 2020 3 24 77 4 2關(guān)系表達(dá)式 有了關(guān)系表達(dá)式 我們就可以將 數(shù)學(xué)關(guān)系式 Fortran關(guān)系表達(dá)式例 x y 15 4 x y gt 15 4a b a b a b ne a bex 2 17 exp x ge 2 17 2020 3 24 78 4 2關(guān)系表達(dá)式 注意 算術(shù)運算優(yōu)先于關(guān)系運算 如 a b ne a b等同于 a b ne a b 實數(shù)運算誤差對關(guān)系表達(dá)式的影響如 1 0 3 0 3 0 EQ 1 0值為 false 1 0 3 0 3 0 0 9999999 對于a eq b abs a b lt 1E 6c ne d abs c d gt 1E 6 2020 3 24 79 4 3邏輯表達(dá)式 關(guān)系表達(dá)式只能表達(dá)簡單的關(guān)系 如 5 x 10就不能用關(guān)系表達(dá)式表達(dá) 此時要用邏輯表達(dá)式 2020 3 24 80 4 3邏輯表達(dá)式 一 邏輯表達(dá)式的一般形式 邏輯量 邏輯運算符 邏輯量 即 邏輯表達(dá)式是由邏輯運算符將兩個邏輯量連接起來的式子 邏輯表達(dá)式的運算元素是邏輯量 結(jié)果也是邏輯量 真 True 或假 False 邏輯量包括邏輯常量 邏輯變量和關(guān)系表達(dá)式 2020 3 24 81 4 3邏輯表達(dá)式 二 邏輯常量兩個 true 真 false 假 三 邏輯變量 用于存放邏輯常量的變量 邏輯變量可以通過賦值語句來接受邏輯常量的值 但在使用前 要進(jìn)行類型說明 例 logicala ba true b false 2020 3 24 82 4 3邏輯表達(dá)式 四 邏輯運算符 and 邏輯與 or 邏輯或 not 邏輯非 eqv 邏輯等 同或 neqv 邏輯不等 異或 2020 3 24 83 4 3邏輯表達(dá)式 五 邏輯運算符的運算規(guī)則 P83表4 3 若a b為兩個邏輯量 則 a and b 當(dāng)a b同時為真時 為真 a or b 當(dāng)a b中任意一個為真或同時為真時 為真 not a 當(dāng)a為真 其值為假 當(dāng)a為假 其值真 a eqv b 當(dāng)a b為同一邏輯常量時 為真 a neqv b 當(dāng)a b不為同一邏輯常量時 為真 2020 3 24 84 4 3邏輯表達(dá)式 六 邏輯表達(dá)式的運算次序 P84表4 5 運算次序為 括號 算術(shù)運算 關(guān)系運算 邏輯運算而邏輯運算 not and or eqv neqv 2020 3 24 85 4 3邏輯表達(dá)式 例1 寫出下列條件的邏輯表達(dá)式 5 k 10k ge 5 and k le 10 f 3g或 f 5tabs f le 3 g or abs f eq 5 t 1 a 8并且1 b 8 a ge 1 and a le 8 and b ge 1 and b le 8 2020 3 24 86 4 3邏輯表達(dá)式 例2 若a 2 5 b 7 5 c 5 0 d 6 0 求下列邏輯表達(dá)式的值 a lt b and b lt c t f f 2020 3 24 87 4 3邏輯表達(dá)式 例2 若a 2 5 b 7 5 c 5 0 d 6 0 求下列邏輯表達(dá)式的值 c 2 0 d lt a and not true or c le d 8 5 F T F F T 2020 3 24 88 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) 有以下三種典型的塊if選擇結(jié)構(gòu) if 條件 then 塊if語句 塊 then塊 endif endif語句 2020 3 24 89 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) if 條件 then塊1 then塊 else塊2 else塊 endif 2020 3 24 90 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) 例 2X 3 X 2 Y X 5 X 2 編程如下 read xif x le 2 theny 2 x 3elsey x 5endifwrite x x y yend 2020 3 24 91 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) if 條件1 then塊1elseif 條件2 then塊2 elseif塊 elseif 條件n then塊n else塊 n 1 endif 2020 3 24 92 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) 說明 每個塊if中可以完整地包含一個 或多個 塊if結(jié)構(gòu) 即構(gòu)成塊if的嵌套結(jié)構(gòu) 如 if 條件1 thenif 條件1 then塊1if 條件2 thenelse塊2if 條件2 thenendif塊2elseendif塊1endifendif 2020 3 24 93 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) 一個塊if語句必須和一個endif語句相對應(yīng) 塊if中的 then塊 else塊 和 elseif塊 可為空塊 2020 3 24 94 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) 例1 求一元二次方程ax2 bx c 0的根 當(dāng)b2 4ac 0時有兩個實根 b2 4ac 0時有兩個復(fù)根 2020 3 24 95 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) print inputa b c read a b cf b 2 0 a d b 2 4 0 a cg sqrt d 2 0 a if d ge 0 0 thenprint x1 f i ge sqrt d print x2 f i gx1 b e 2 0 a endifx2 b e 2 0 a endprint x1 x1print x2 x2else 2020 3 24 96 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) 例2 求下列函數(shù)值 0 x 10 2x 20 10 x 0 y 20 0 x 20 30 0 5x 20 x 40 50 x 40 x 50 0 x 50 2020 3 24 97 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) 輸入x truex 10false truex 0false truex 20false truex 40false truex 50false y 50 xy 0 打印y y 0 y 20 y 30 0 5x y 2x 20 2020 3 24 98 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) 源程序一 read xif x lt 50 0 thenif x lt 10 0 theny 50 0 xy 0 0elseelsey 0 0if x lt 0 0 thenendify 2 0 x 20 0endifelseendifif x lt 20 0 thenendify 20 0endifelseprint y yif x lt 40 0 thenendy 30 0 0 5 xelse 2020 3 24 99 4 4用塊if實現(xiàn)選擇結(jié)構(gòu) 源程序二 read xprint y yif x lt 10 0 thenendy 0 0elseif x lt 0 0 theny 2 0 x 20 0elseif x lt 20 0 theny 20 0elseif x lt 40 0 theny 30 0 0 5 xelseif x lt 50 0 theny 50 0 xelsey 0 0endif 2020 3 24 100 4 5邏輯if語句 邏輯if語句也是一種選擇結(jié)構(gòu) 但與塊if不同 主要表現(xiàn)在 只用一行表示一個選擇結(jié)構(gòu) 僅當(dāng)條件成立時執(zhí)行 并且只執(zhí)行一條語句 邏輯if語句的一般形式 If 條件 語句例 if n le 100 n n 1 2020 3 24 101 4 5邏輯if語句 例 2X 3 X 2 Y X 5 X 2 編程如下 read xread xif x le 2 thenif x le 2 y 2 x 3y 2 x 3if x gt 2 y x 5elsewrite y yy x 5endendifwrite y yend 2020 3 24 102 課后練習(xí)題 P96 第一 三題 第四 五 七題 2020 3 24 103 第五章循環(huán)結(jié)構(gòu)的實現(xiàn) 2020 3 24 104 第五章循環(huán)結(jié)構(gòu)的實現(xiàn) 所謂循環(huán) 是指在程序執(zhí)行過程中需要重復(fù)執(zhí)行的程序段 在實際問題中 我們經(jīng)常遇到循環(huán) 如 求 n n 無條件循環(huán)GOTO循環(huán)結(jié)構(gòu)直到型循環(huán)條件循環(huán)當(dāng)型循環(huán)計數(shù)型循環(huán) 2020 3 24 105 5 1用goto語句實現(xiàn)循環(huán) goto語句的一般形式 goto其中 s1 語句標(biāo)號 功能 程序執(zhí)行到此語句時 無條件的轉(zhuǎn)向標(biāo)號為s1的語句去執(zhí)行 例 求1 10的累加和 編寫程序段 integerx sumx 0 0sum 0 010 x x 1sum sum xgoto10 2020 3 24 106 5 1用goto語句實現(xiàn)循環(huán) 如果我們把以上goto語句作為邏輯if語句中的執(zhí)行語句 則就可以實現(xiàn)有條件的循環(huán) 即 integerx sum求1 10的累加和x 0 0sum 0 010 x x 1sum sum xif x lt 10 goto10print sumend 2020 3 24 107 5 2當(dāng)型循環(huán)的實現(xiàn) 一 用塊if和goto語句實現(xiàn)循環(huán)一般形式 s1if 條件 then標(biāo)號塊gotos1endif 所謂當(dāng)型循環(huán) 是指執(zhí)行循環(huán)體要依據(jù)事先給定的條件 當(dāng)條件成立時執(zhí)行循環(huán) 否則就不執(zhí)行循環(huán) 2020 3 24 108 5 2當(dāng)型循環(huán)的實現(xiàn) 編程如下 read nm 1i 110if i le n thenm m ii i 1goto10endifprint mend 例 求n 2020 3 24 109 5 2當(dāng)型循環(huán)的實現(xiàn) 二 用dowhile語句實現(xiàn)當(dāng)型循環(huán)一般形式dos1 while 條件 循環(huán)體s1 2020 3 24 110 5 2當(dāng)型循環(huán)的實現(xiàn) 例 求n 編程如下 read nm 1i 1do10while i le n m m ii i 110continueprint mend 2020 3 24 111 5 3直到型循環(huán)的實現(xiàn) 一 用邏輯if語句實現(xiàn)直到型循環(huán)一般形式s1循環(huán)體if 條件 gotos1 所謂直到型循環(huán) 是指先執(zhí)行循環(huán)體 再判斷條件 如果條件為 假 真 繼續(xù)執(zhí)行循環(huán) 直到條件為 真 假 時終止循環(huán) 2020 3 24 112 5 3直到型循環(huán)的實現(xiàn) 例1 求n 編程如下 read nm 1i 110continuem m ii i 1if i le n goto10print mend 2020 3 24 113 5 3直到型循環(huán)的實現(xiàn) 編程如下 integersigns 1 0d 2 0sign 110sign 1 signt sign ds s td d 1if d le 100 0 goto10print send 例2 求的值 2020 3 24 114 當(dāng)型與直到型循環(huán)的比較 當(dāng)型循環(huán)直到型循環(huán)不同 先判斷條件先執(zhí)行循環(huán)體再執(zhí)行循環(huán)體再判斷條件 循環(huán)體至少被執(zhí)行一次 循環(huán)結(jié)構(gòu)關(guān)鍵 條件判斷 改變條件的語句 2020 3 24 115 5 4用do語句實現(xiàn)循環(huán) 當(dāng)循環(huán)的初值 終值和循環(huán)次數(shù)都已知時 可用do語句實現(xiàn)循環(huán) 用do語句實現(xiàn)的循環(huán)稱為 do循環(huán) do循環(huán)是由一個do語句和循環(huán)體組成 2020 3 24 116 5 4用do語句實現(xiàn)循環(huán) 一 一般形式dos v e1 e2 e3 循環(huán)體s說明 s 循環(huán)體終端語句的標(biāo)號 v 循環(huán)控制變量 do變量 可為整型 實型或雙精度 2020 3 24 117 5 4用do語句實現(xiàn)循環(huán) 一 一般形式dos v e1 e2 e3 循環(huán)體s說明 e1 e2 e3是整型 實型或雙精度表達(dá)式e1 循環(huán)變量初值e2 循環(huán)變量終值e3 循環(huán)變量增量 步長 默認(rèn)值 1 當(dāng)v為整型變量 e3 1時 e3可忽略 例 DO10 I 1 10 2DO100 N 1 5 2020 3 24 118 do循環(huán)執(zhí)行過程P103圖5 8 2020 3 24 119 r MAX INT e2 e1 e3 e3 0 v v e3 執(zhí)行過程P103圖5 7 并將其轉(zhuǎn)換為循環(huán)變量的類型 2020 3 24 120 5 4用do語句實現(xiàn)循環(huán) 例如 求1 10的累加和 integerx sumsum 0DO10 x 1 10sum sum xx x 110continueprint sumend integerx sumx 0 0sum 010if x le 10 thenx x 1sum sum xgoto10endifprint sumend 2020 3 24 121 5 4用do語句實現(xiàn)循環(huán) 二 執(zhí)行過程 分四種情形 當(dāng)e2 e1且e3 0 當(dāng)e2 e1且e3 0 2020 3 24 122 5 4用do語句實現(xiàn)循環(huán) 當(dāng)e20 當(dāng)e2 e1且e3 0 2020 3 24 123 5 4用do語句實現(xiàn)循環(huán) 編程如下 do10i 1 30read x10if x ge 60 print i xend 循環(huán)體 例1 從鍵盤輸入30個學(xué)生的單科成績 并將其中及格以上的學(xué)生序號和成績打印出來 2020 3 24 124 5 4用do語句實現(xiàn)循環(huán) 例2 打印正弦sinx的值 間隔0 1o 從0o 360o 編程如下 do100i 0 3600 x i 10 0y sin x 3 14159 180 100print x x y yend 2020 3 24 125 5 4用do語句實現(xiàn)循環(huán) 說明 DO循環(huán)是當(dāng)型循環(huán) 可用e1 e2 e3的值求出循環(huán)次數(shù) 計算公式 r max int e2 e1 e3 e3 0 e3 0則運行時出錯 被零除 例 do10 i 1 2 6 6 0 2r max int 6 1 0 0 0 因為循環(huán)變量I是整型 e1e2且e3 0 則循環(huán)次數(shù)為0 由于實數(shù)在內(nèi)存中存儲的誤差 v e1 e2 e3盡可能用整型量 2020 3 24 126 5 4用do語句實現(xiàn)循環(huán) 說明 e1 e2 e3的值在do循環(huán)體內(nèi)不會改變 即使給表達(dá)式e1 e2 e3中的變量賦值也不影響循環(huán)次數(shù)例 m 10do10 i 1 m 3m 100 mprint i m10continueendr 10 1 3 3 4 2020 3 24 127 5 4用do語句實現(xiàn)循環(huán) 說明 循環(huán)終端語句必須是可執(zhí)行語句 但除goto 塊if else elseif endif end stop和return語句外 繼續(xù)語句 continue語句 循環(huán)終端語句必須是可執(zhí)行語句 那么 這種作為循環(huán)終端語句的語句具有雙重作用 一是作為循環(huán)終端的標(biāo)志 二是要完成自身的功能 因此影響了程序的可讀性 Fortran用一個專門的語句作為do循環(huán)的終端語句 即continue語句 它本身不進(jìn)行任何機(jī)器操作 2020 3 24 128 5 4用do語句實現(xiàn)循環(huán) 三 有關(guān)do循環(huán)的規(guī)定 在循環(huán)體內(nèi)不允許對循環(huán)變量再賦值 但可以引用 例 do10 i 20 1 1i 2 i不合法k 2 i引用i 合法print i k10continue 2020 3 24 129 例2 do100 I 1 10 20print I 100continueif x gt 100 goto20 例1 do10 n 1 100 if n 2 ge 500 goto20 10continue 20print n n 2 5 4用do語句實現(xiàn)循環(huán) 三 有關(guān)do循環(huán)的規(guī)定 可從do循環(huán)體內(nèi)轉(zhuǎn)到循環(huán)體外 但不允許從循環(huán)外轉(zhuǎn)到循環(huán)內(nèi) 內(nèi)外 錯誤 2020 3 24 130 5 4用do語句實現(xiàn)循環(huán) 三 有關(guān)do循環(huán)的規(guī)定 當(dāng)退出do循環(huán)時 循環(huán)變量仍有定義 其值為離開循環(huán)時 循環(huán)變量的值三種情況 循環(huán)正常結(jié)束v e1 r e3 循環(huán)次數(shù)為0v e1 非正常退出循環(huán)例 m 100do10 i 1 100 3m 10 mprint i mif m gt 150 goto2010continue20print i mend 2020 3 24 131 5 4用do語句實現(xiàn)循環(huán) 例 計算100100100n k k2 1 k的值 k 1k 1k 1編程如下 ctocomputen mands n 0m 0s 0 0do50k 1 100n n km m k ks s 1 0 k50continueprint n m send 2020 3 24 132 5 4用do語句實現(xiàn)循環(huán) 四 do循環(huán)的嵌套在一個do循環(huán)中還可以包含一套或多套完整的do循環(huán) 這就是do循環(huán)的嵌套 一般形式 以雙重循環(huán)為例 do10i 1 10 do20j 1 10 20continue 10continue 2020 3 24 133 5 4用do語句實現(xiàn)循環(huán) 五 關(guān)于do循環(huán)嵌套的規(guī)定 內(nèi)外循環(huán)不允許交叉 do10i 1 10 do20j 1 10 10continue 20continue 2020 3 24 134 5 4用do語句實現(xiàn)循環(huán) 五 關(guān)于do循環(huán)嵌套的規(guī)定 在一個程序單位中 并列的do循環(huán)可用同名循環(huán)變量 而嵌套的do循環(huán)不允用同一變量作為循環(huán)變量 例 do10i 1 10 do20i 1 10 20continue 10continue使循環(huán)控制產(chǎn)生混亂 2020 3 24 135 5 4用do語句實現(xiàn)循環(huán) 例 打印 九九表 編程如下 do10i 1 9do20j 1 9k i jprint i j k20continueprint 10continueend 2020 3 24 136 5 4用do語句實現(xiàn)循環(huán) 六 三種循環(huán)形式的選擇 循環(huán)次數(shù)可事先確定 優(yōu)先用do循環(huán) 若循環(huán)體可能一次也不執(zhí)行 則優(yōu)先用當(dāng)型循環(huán)若循環(huán)體至少執(zhí)行一次 則當(dāng)型 直到型循環(huán)都可 2020 3 24 137 課后練習(xí)題 P126 第二 三 八題 2020 3 24 138 第六章Fortran的數(shù)據(jù)結(jié)構(gòu) 2020 3 24 139 6 1程序中的數(shù)據(jù)結(jié)構(gòu) 程序代數(shù)表達(dá)式 程序 算法 數(shù)據(jù)結(jié)構(gòu)對于同一個問題的求解 即一個程序的實現(xiàn) 可以采用不同的數(shù)據(jù)結(jié)構(gòu)和不同的算法 選擇合適的數(shù)據(jù)結(jié)構(gòu)可以降低算法的復(fù)雜度 2020 3 24 140 6 1程序中的數(shù)據(jù)結(jié)構(gòu) 在計算機(jī)高級語言中用數(shù)據(jù)類型來表示不同的數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)一般有以下三類 基本類型 Fortran支持 構(gòu)造類型 Fortran支持 指針類型 Fortran90支持 2020 3 24 141 6 1程序中的數(shù)據(jù)結(jié)構(gòu) Fortran支持如下幾種基本類型 整型 第三章 實型 第三章 雙精度型復(fù)型字符型邏輯型 第四章 2020 3 24 142 6 1程序中的數(shù)據(jù)結(jié)構(gòu) Fortran支持如下幾種構(gòu)造類型 數(shù)組 第九章 記錄 第十三章 文件 第十三章 2020 3 24 143 6 2雙精度數(shù)據(jù)類型 由于實型數(shù)據(jù)提供的有效數(shù)字的位數(shù)有限 微型計算機(jī)一般提供7位 一方面滿足不了精度的需要 另一方面還會產(chǎn)生誤差 雙精度類型以兩倍于實型的字節(jié) 一般為8個字節(jié) 來存儲數(shù)據(jù) 提供15 17位有效數(shù)字 解決了上述的問題 2020 3 24 144 6 2雙精度數(shù)據(jù)類型 Fortran中雙精度常數(shù)要用指數(shù)表示 如 12 3456789 1 2345656789D 1 0 123456789 1 23456789D 1注意 不可寫成1 2345656789E 1Fortran中雙精度變量使用前要用類型說明語句或IMPLICIT語句加以說明 如 doubleprecisionA B Cimplicitdoubleprecision a c 2020 3 24 145 程序舉例 例6 1 求如下分?jǐn)?shù)序列前20項的和 2020 3 24 146 程序如下 Doubleprecisiona b c ss 0 0D0a 1 0D0b 1 0D0c a bdo10 i 1 20s s c ba bb cc a b10continueprint s send 2020 3 24 147 6 3復(fù)型類型數(shù)據(jù) Fortran中復(fù)型常數(shù)要用一個括弧中的兩個實數(shù)來表示 第一個實數(shù)表示復(fù)數(shù)中的實部 第二個實數(shù)表示復(fù)數(shù)中的虛部 如 1 2 5i 1 0 2 5 5 4i 0 0 5 4 Fortran中復(fù)型變量使用前要用類型說明語句或IMPLICIT語句加以說明 如 complexA B Cimplicitcomplex a c 2020 3 24 148 6 3復(fù)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025標(biāo)準(zhǔn)版汽車租賃合同范本
- 2025二手車買賣交易合同范本
- 2025年個人租房合同范文
- 羽毛球知到課后答案智慧樹章節(jié)測試答案2025年春山東工藝美術(shù)學(xué)院
- 2025簡易辦公室租賃合同
- 2024年浙大寧波理工學(xué)院招聘事業(yè)編制人員真題
- 2024年伊春市南岔縣招聘社區(qū)工作者真題
- 太原境內(nèi)旅游合同范本
- 2024年啟東農(nóng)村商業(yè)銀行招聘真題
- 手繪學(xué)術(shù)論文答辯模板
- QCT457-2023救護(hù)車技術(shù)規(guī)范
- HYT 262-2018 海水中溶解甲烷的測定 頂空平衡-氣相色譜法(正式版)
- 普通植物病理學(xué)智慧樹知到期末考試答案章節(jié)答案2024年東北農(nóng)業(yè)大學(xué)
- 人事檔案轉(zhuǎn)遞通知單
- 《離散數(shù)學(xué)》試題帶答案
- 2024年一級建造師之一建礦業(yè)工程實務(wù)題庫附答案(完整版)
- 寧德時代入職測評試題答案
- SLT278-2020水利水電工程水文計算規(guī)范
- 培養(yǎng)好習(xí)慣成就好人生主題班會
- 《辦公用品管理》課件
- 醫(yī)院高風(fēng)險意外事件應(yīng)急措施和救護(hù)機(jī)制
評論
0/150
提交評論