輸入輸出與聲明_第1頁
輸入輸出與聲明_第2頁
輸入輸出與聲明_第3頁
輸入輸出與聲明_第4頁
輸入輸出與聲明_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

輸入輸出與聲明第一頁,共四十五頁,編輯于2023年,星期一編寫程序,把絕對(duì)溫度310.15K轉(zhuǎn)化成攝氏溫度℃以及華氏溫度℉。分析:攝氏度=開爾文-273.15;華氏度=攝氏度×9/5+32;簡單的Fortran程序示例聲明時(shí)可順帶賦以初值如:Kelvin=310.15“=”為賦值號(hào),表示把右邊的值賦給左邊的變量‘print*,’表示把其后的結(jié)果輸出到屏幕(print表示輸出設(shè)備為屏幕,*表示以默認(rèn)格式輸出)用引號(hào)(單雙引號(hào)都可)來表示字符,如‘C’、‘310.15K=’藍(lán)色字體表示是Fortran的關(guān)鍵字程序執(zhí)行結(jié)果:程序執(zhí)行部分變量聲明部分第二頁,共四十五頁,編輯于2023年,星期一Fortran主程序的構(gòu)造形式雖然[]中的部分都可以省略,但是,

作為良好習(xí)慣,強(qiáng)烈建議在寫任何主程序時(shí)都要保留以下部分:program

程序名implicitnone……endprogram約定:中括號(hào)[]表示理論上可以省略的部分。[program

程序名][implicitnone][聲明語句][執(zhí)行語句]end[program[程序名]]以Program開頭的整個(gè)程序單元稱為“主程序”,在主程序之外,還可以有“子程序”,以后章節(jié)中將會(huì)介紹。implicitnone:

關(guān)閉“隱式聲明”

功能,如此一來,任何變量都要先聲明才能使用。第三頁,共四十五頁,編輯于2023年,星期一自由格式的源文件名多以.f90為后綴

Fortran語言代碼不區(qū)分大小寫字母。

用‘!’表示注釋,只為增加程序的可讀性,不會(huì)被編譯系統(tǒng)編譯。同一行內(nèi)可書寫多條語句,用分號(hào)分隔。如:a=3;b=5一條語句可以寫成兩行,使用&作為續(xù)行符。

例如要在屏幕上輸出abc,可寫成一行:print*,‘a(chǎn)bc’也可將其寫成兩行:Print&*,‘a(chǎn)bc’空格不帶有意義,為方便閱讀可以隨意多加空格。Fortran90提倡自由書寫格式:Fortran77使用固定書寫格式,源文件名以.for或.f為后綴。第四頁,共四十五頁,編輯于2023年,星期一基本語句1:類型聲明語句變量聲明語句的一般形式如下(雙冒號(hào)::可以省略):變量類型::變量名表

例如:integer::i,nreala,b,clogical::f變量在聲明時(shí)可以順帶為變量賦以初值,這時(shí),雙冒號(hào)::不可省略,形式如下:變量類型

::

變量名1=a1,變量名2=a2,…例如:integer::num=1,age=10,yearreal::x=15.2,y,z=32.51可見,變量表內(nèi),賦初值變量與不賦初值變量可以混合使用。程序中使用的變量,必須先聲明其類型和變量名,然后才能使用。每聲明一個(gè)變量,計(jì)算機(jī)將會(huì)為該變量分配一個(gè)內(nèi)存空間,用于存儲(chǔ)該變量的值。第五頁,共四十五頁,編輯于2023年,星期一變量的起名規(guī)則Fortran90規(guī)定,變量名應(yīng)以字母開頭,可采用數(shù)字(0-9)、字母(a-z)或下劃線(‘_’),變量名的長度為1-31個(gè)字符,名字中不能出現(xiàn)空格。變量的名字的開頭必須是字母(a,b,…z)。以下都是合法的變量名:

a,B_,c3,Imax,student_num,g34t以下都是不合法變量名:3d,x+y,_data,Mr.doctorFortran90不區(qū)分大小寫字符。

例如:y2和Y2等效,是同一個(gè)變量。第六頁,共四十五頁,編輯于2023年,星期一五種基本數(shù)據(jù)類型integer(整型)聲明一個(gè)整數(shù)型的變量integer::n合法的整型常量如0,5,+456,-239變量與常量的概念:上例中,n為整型變量,5,-239等為整型常量。real(實(shí)型)(又稱’浮點(diǎn)數(shù)’或’浮點(diǎn)型’)聲明實(shí)型變量

real::a,b合法的實(shí)型常量形式如:3.0,5.,-1E5,2.1e-10,.3第七頁,共四十五頁,編輯于2023年,星期一關(guān)于實(shí)型常量:0.5可以寫成:.55.0可以寫成:5.E表示指數(shù)形式,如:1.2e-3表示1.2×10-3E前后的數(shù)字都不可省略(所以“E6”為非法形式)E右側(cè)指數(shù)部分不能是小數(shù)(所以“2.5E1.5”為非法形式)不合法的實(shí)型常量例如:E6,5*e3,2.5E1.5注意:把一個(gè)實(shí)型常量賦給整型變量,該變量的值仍為整型,將把小數(shù)部分直接截掉。如運(yùn)行右側(cè)程序所得結(jié)果為:第八頁,共四十五頁,編輯于2023年,星期一character(字符型)例:character::a!聲明一個(gè)字符(長度為1)

character(len=10)::a!聲明一個(gè)長度為10的字符串

character(10)::a!聲明一個(gè)長度為10的字符串

character*10::a!聲明一個(gè)長度為10的字符串字符串常量示例(引號(hào)的應(yīng)用):單雙引號(hào)都可封裝字符串,例如:Print*,“hello”,‘hello’!輸出結(jié)果為:hellohello用雙引號(hào)封裝字符串時(shí),可以在字符串中任意使用單引號(hào),例如:Print*,“That’sright.”!輸出結(jié)果為:

That’sright.用單引號(hào)封裝字符串時(shí),可以在字符串中任意使用雙引號(hào),例如:Print*,‘That“right”.’!輸出結(jié)果為:

That“right”.用單引號(hào)封裝字符串時(shí),需要連用兩個(gè)單引號(hào)來表示字符串中的單引號(hào),例如:Print*,‘That‘‘sright.’!輸出結(jié)果為:

That’sright.用雙引號(hào)封裝字符串時(shí),需要連用兩個(gè)雙引號(hào)來表示字符串中的雙引號(hào),例如:Print*,”That‘s””right””.”!輸出結(jié)果為:

That’s“right”.第九頁,共四十五頁,編輯于2023年,星期一注意:Fortran只識(shí)別半角的數(shù)字、字母或其他標(biāo)點(diǎn)符號(hào)(如逗號(hào),分號(hào)等),不識(shí)別全角字符。在編寫程序代碼時(shí)要使用半角字符,如果偶爾出現(xiàn)全角字符,應(yīng)及時(shí)改正。比較難區(qū)分半角與全角的是逗號(hào),最難區(qū)分半角與全角的是空格。因此,為防止不小心出現(xiàn)全角字符,在編寫程序前,最好先把輸入法設(shè)為英文,或者中文的半角字符狀態(tài)。全為半角字符×混有全角字符輸入字符時(shí)需注意:引號(hào)必須是半角字符。第十頁,共四十五頁,編輯于2023年,星期一4.complex(復(fù)型)表示復(fù)數(shù)

complex::aa=(x,y)!x為實(shí)部,y為虛部,當(dāng)x=2,y=3.5時(shí),a=2+3.5i

復(fù)型常量舉例:(1.25,4),(1e-5,3.2),(4,7)5.logical(邏輯型)邏輯型變量主要在邏輯判斷時(shí)使用,其常量只有“真”(.true.)和“假”(.false.)兩個(gè)值(單詞兩側(cè)的“.”不可省略)。例如:

logical::a=.false.,b=.true.。print*,a,b輸出結(jié)果為:可見,打印輸出的邏輯值只是大寫的首字母。第十一頁,共四十五頁,編輯于2023年,星期一強(qiáng)烈建議:變量聲明之前,都要先寫下implicitnone語句,把I-N規(guī)則關(guān)閉。I-N規(guī)則所謂I-N規(guī)則又稱“隱式聲明”規(guī)則,是指Fortran允許變量可以不經(jīng)聲明就使用,凡是以i,j,k,l,m,n開頭的變量,如不聲明,則默認(rèn)為整數(shù)型變量,其他字母開頭的變量為實(shí)數(shù)型變量。寫下implicitnone后將禁止這一規(guī)則,所有變量都必須先聲明,即顯式(explicit)聲明,把聲明寫在明處,然后才能使用。程序運(yùn)行結(jié)果為:上例中沒有注明implicitnone,于是允許對(duì)num和x不經(jīng)聲明就使用,程序?qū)⒛J(rèn)num為整型,x為實(shí)型。如果沒有注明implicitnone,則用I-N規(guī)則來確定未聲明變量的類型:第十二頁,共四十五頁,編輯于2023年,星期一對(duì)以上程序添加implicitnone之后,編譯出錯(cuò):對(duì)變量先聲明再使用是良好的習(xí)慣,因此,強(qiáng)烈建議每次編程時(shí)都要添加implicitnone。沒有為num和x聲明類型,所以編譯出錯(cuò),所以只需添加對(duì)它們的聲明語句即可。第十三頁,共四十五頁,編輯于2023年,星期一基本語句2:賦值語句賦值號(hào):“=”,表示把賦值號(hào)右邊的值賦給左邊的變量,如:

a=2.3;a=b;p=.ture.雖然賦值號(hào)與數(shù)學(xué)上的等號(hào)形式上相同,但意義截然不同!賦值號(hào)左邊只能是變量名(或數(shù)組元素名、數(shù)組名)不能是表達(dá)式,例如:

x=x+1,正確,作用是使x的數(shù)值增加1。

x+1=x,錯(cuò)誤,違反語法規(guī)則。賦值號(hào)表示一個(gè)動(dòng)作,把其右邊表達(dá)式的值存入到左邊變量的存儲(chǔ)單元中,從而使左側(cè)變量獲得新值。執(zhí)行語句a=b之后,a將獲得b的值,而b的值不變。第十四頁,共四十五頁,編輯于2023年,星期一為了進(jìn)一步理解賦值號(hào)的意義,練習(xí):怎樣將變量a和b中的值進(jìn)行互換?programtestinteger::a=3,b=5,tprint*,'a=',a,'b=',b____________________print*,'a=',a,'b=',bendprogram思考:如果不借助第三方變量t,如何用三條語句實(shí)現(xiàn)a與b的值互換t=a;a=b;b=ta=a+b;___________;___________;

a=a-b;___________;___________;

或:填入適當(dāng)語句使其運(yùn)行出以下結(jié)果:第十五頁,共四十五頁,編輯于2023年,星期一基本語句3:簡單的輸入輸出語句簡單輸入語句:Read(設(shè)備號(hào),格式說明串),變量列表設(shè)備號(hào)是一個(gè)整數(shù),當(dāng)要以’鍵盤’作為輸入設(shè)備時(shí),可采用鍵盤的設(shè)備號(hào):5,例如:read(5,*),a!作用:從鍵盤讀取數(shù)據(jù),將值放入變量a中。上式中的星號(hào)*表示輸入格式為默認(rèn)格式(Fortran自己規(guī)定的格式)。特別地,當(dāng)輸入設(shè)備為默認(rèn)設(shè)備鍵盤時(shí),還可以把設(shè)備號(hào)省略,如:read*,a上句中,型號(hào)*表示采用缺省格式;上式等價(jià)于:read(*,*),a或read(5,*),a當(dāng)從默認(rèn)的輸入設(shè)備(鍵盤)進(jìn)行輸入時(shí),設(shè)備號(hào)還可以寫成星號(hào)*,例如:read(*,*),a第十六頁,共四十五頁,編輯于2023年,星期一簡單輸入語句的應(yīng)用舉例右側(cè)程序執(zhí)行后,光標(biāo)閃爍等待用戶輸入,用戶輸入以下兩個(gè)數(shù)字,用空格(或回車、逗號(hào))分開,輸入完畢后,回車:45□2.3?(此處用方框□表示空格,箭頭?表示敲擊回車鍵)將會(huì)得到以下結(jié)果:45和2.3分別賦給了變量a和b。輸入完畢之后,總要敲‘回車’表示結(jié)束輸入。第十七頁,共四十五頁,編輯于2023年,星期一如果輸入的變量個(gè)數(shù)小于read語句中的變量個(gè)數(shù),則計(jì)算機(jī)會(huì)繼續(xù)等待下一變量的輸入。如果輸入的變量個(gè)數(shù)大于read語句中的變量個(gè)數(shù),那么多余的數(shù)據(jù)將不起作用。如下圖示例:輸入的數(shù)據(jù)之間可出現(xiàn)斜線’/’,read語句遇到’/’時(shí),便結(jié)束讀數(shù)。例如: Read*,a,b,m,n

輸入數(shù)據(jù)為: 2.1,7.5/24,10?

結(jié)果a=2.1,b=7.5,而m,n未被賦值(保持初始的隨機(jī)值)如果read中有幾個(gè)連續(xù)的變量要賦以相同的數(shù)值,例如要使i=j=k,則可進(jìn)行如下操作: Read*,i,j,k

如果輸入數(shù)據(jù)為:

3*8?

它等效于: 8,8,8?第十八頁,共四十五頁,編輯于2023年,星期一簡單輸出語句Write(設(shè)備號(hào),格式說明串),輸出項(xiàng)列表(變量、常量、或表達(dá)式等)當(dāng)向屏幕(設(shè)備號(hào)為6)輸出時(shí):write(6,*),a,5,b+c!星號(hào)*表示采用Fortran默認(rèn)的輸出格式屏幕同時(shí)也是缺省設(shè)備,因此上句還可寫成:Write(*,*),a,5,b+c特別地,當(dāng)要輸出到缺省設(shè)備(屏幕)中時(shí),可以省略設(shè)備號(hào),同時(shí)把write換成print,例如:print*,a

!把a(bǔ)的值打印到屏幕上,星號(hào)*表示采用fortran默認(rèn)的格式星號(hào)*表示Fortran默認(rèn)的輸入輸出格式,又稱為“表控輸入輸出格式”,不同的編譯器系統(tǒng)具有不同的表控格式。第十九頁,共四十五頁,編輯于2023年,星期一同一條輸出語句的各個(gè)輸出項(xiàng)會(huì)輸出在同一行。每一條輸出語句都會(huì)另起一行輸出數(shù)據(jù),即自動(dòng)換行。當(dāng)Print(或write)語句中沒有任何輸出項(xiàng)時(shí),將輸出一個(gè)空白行。程序示例:運(yùn)行結(jié)果:第二十頁,共四十五頁,編輯于2023年,星期一算數(shù)表達(dá)式由算術(shù)運(yùn)算符連接常量、變量等運(yùn)算對(duì)象所組成的公式,稱為“算數(shù)表達(dá)式”。共有5種運(yùn)算符。運(yùn)算符含義+加法運(yùn)算符-減法運(yùn)算符*乘法運(yùn)算符/除法運(yùn)算符**乘方運(yùn)算符乘號(hào)*不能省略如代數(shù)式4xy3必須寫成4*x*y**3,代數(shù)式2(a-d)(b+c)必須寫成:2*(a-d)*(b+c)Fortran的括號(hào)沒有{}和[],只有()。算數(shù)運(yùn)算符的優(yōu)先順序:當(dāng)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符時(shí),需要按優(yōu)先級(jí)來決定次序。優(yōu)先級(jí)從低到高為:

加減(+,-)

乘除(*,/)乘方(**)函數(shù)括號(hào)同一運(yùn)算級(jí)別的按“從左到右”的原則。例如:3.0*sqrt(2*x)**3/(2.0+y),(sqrt()為求平方根的函數(shù),函數(shù)名后總要緊跟括號(hào))

上式所對(duì)應(yīng)的數(shù)學(xué)表達(dá)式為:

注意:對(duì)于多次乘方,按先右后左的順序進(jìn)行。例如2**3**2,相當(dāng)于2**(3**2)第二十一頁,共四十五頁,編輯于2023年,星期一算數(shù)表達(dá)式中的類型轉(zhuǎn)換(1).相同類型數(shù)據(jù)之間的運(yùn)算。將會(huì)保留原類型,實(shí)型數(shù)據(jù)之間運(yùn)算的結(jié)果還是實(shí)型,整型數(shù)據(jù)之間運(yùn)算的結(jié)果還是整型。特別注意:整型數(shù)據(jù)相除的結(jié)果,小數(shù)部分將省去,例如6/4的值是1而不是1.5,1/2的結(jié)果是0而不是0.5;若想保留小數(shù)部分,6/4應(yīng)寫成6.0/4.0思考:3*10/3和10/3*3的結(jié)果分別是?(2).不同類型數(shù)據(jù)之間的運(yùn)算。編譯器先將他們轉(zhuǎn)換成同一類型,然后再進(jìn)行運(yùn)算。類型轉(zhuǎn)換的規(guī)則是:整型實(shí)型復(fù)型,即:

注意:當(dāng)表達(dá)式中有多個(gè)運(yùn)算符時(shí),從左到右進(jìn)行,只在遇到不同類型的運(yùn)算量時(shí)才進(jìn)行轉(zhuǎn)換。那么,3/4*5.0的結(jié)果是?整型與實(shí)型數(shù)據(jù)運(yùn)算,所得結(jié)果為實(shí)型數(shù)據(jù),因此,6/4除了可寫成6.0/4.0之外,也可表示為:6.0/4,或6/4.0;整型或?qū)嵭蛿?shù)據(jù),與復(fù)型數(shù)據(jù)運(yùn)算時(shí),結(jié)果為復(fù)型數(shù)據(jù)。第二十二頁,共四十五頁,編輯于2023年,星期一函數(shù)有時(shí)程序需要多次使用某一特定的、獨(dú)立的功能,例如求一個(gè)數(shù)的正弦值或絕對(duì)值,為了避免多次重復(fù)編寫實(shí)現(xiàn)此功能的代碼,人們就采用“組裝”代碼的方法來簡化程序設(shè)計(jì)。即:編寫一段實(shí)現(xiàn)某一特定功能的、獨(dú)立的程序代碼封裝起來并命名,稱為“函數(shù)”,并將函數(shù)的功能在函數(shù)名上體現(xiàn)出來,例如用sin來命名求正弦值的函數(shù),用abs來命名求絕對(duì)值的函數(shù)。根據(jù)函數(shù)的編寫者,函數(shù)可以分成兩種:(1):庫函數(shù),是指編譯器自帶的函數(shù)庫中的函數(shù),已由編譯器系統(tǒng)開發(fā)人員所編寫,用戶在編程時(shí)可以直接拿來使用。通常是一些最常用最基本的函數(shù),例如數(shù)值運(yùn)算函數(shù)(如exp或log等)、基本的字符處理函數(shù)、以及基本的文件操作函數(shù)等(參看課本附錄A)。(2):用戶自己編寫的函數(shù),實(shí)現(xiàn)用戶自己定義的某些特定功能。將在以后章節(jié)中介紹。第二十三頁,共四十五頁,編輯于2023年,星期一Fortran90庫函數(shù)中常用的數(shù)學(xué)函數(shù)舉例庫函數(shù)含義庫函數(shù)含義abs(a)絕對(duì)值sin(x)正弦函數(shù)int(a,kind)轉(zhuǎn)換成整型,kind可選cos(x)余弦函數(shù)real(a,kind)轉(zhuǎn)換成實(shí)型,kind可選tan(x)正切函數(shù)len(a)字符串a(chǎn)的長度asin(x)余切函數(shù)mod(a,p)求a除以p的余數(shù),與a同號(hào)acos(x)反余弦函數(shù)sign(a,b)取a絕對(duì)值和b的符號(hào)構(gòu)成新值atan(x)反正切函數(shù)ceiling(a)大于等于a的最小整數(shù)exp(x)e指數(shù)函數(shù)floor(a)小于等于a的最大整數(shù)log(x)自然對(duì)數(shù)max(a1,a2,…)最大值log10(x)以10為底的對(duì)數(shù)min(a1,a2,…)最小值sqrt(x)平方根參看課本附錄A,以下僅是不完全舉例。第二十四頁,共四十五頁,編輯于2023年,星期一函數(shù)使用時(shí)的注意事項(xiàng)自變量要用括號(hào)括起來,例如sinx用fortran語言表示,必須寫成sin(x)。每個(gè)函數(shù)都有一個(gè)或幾個(gè)自變量作為參數(shù),使用時(shí)變量的個(gè)數(shù)或順序必須與要求嚴(yán)格匹配。例如:mod和sign要兩個(gè)變量作為參數(shù),對(duì)順序有要求:mod(8,3)的結(jié)果為2;mod(3,8)的結(jié)果為3;sign(2,-3)的結(jié)果為-2;sign(-3,2)的結(jié)果為3;max需要兩個(gè)或兩個(gè)以上的自變量,對(duì)順序無要求。有些函數(shù)對(duì)自變量的類型是有嚴(yán)格要求的,函數(shù)的結(jié)果也有特定的類型。mod函數(shù)要求自變量為整型,其結(jié)果也為整型。sqrt函數(shù)要求自變量必須為實(shí)型,所以,sqrt(3)是錯(cuò)誤的使用方式,應(yīng)改為:sqrt(3.0),類似的還有max,min,floor與ceiling函數(shù)等等。ProgramtestImplicitnonereal::a=9Print*,sqrt(a)Endprogram正確ProgramtestImplicitnoneInteger::a=9Print*,sqrt(a)Endprogram×錯(cuò)誤第二十五頁,共四十五頁,編輯于2023年,星期一函數(shù)的自變量可以是常量或變量,也可以是表達(dá)式,如:abs(-2.3),exp(x+y)注意三角函數(shù)自變量的單位(弧度或角度)。例如:sin(x)中,x的單位是弧度,sin(3.1416/6)的值約為0.5。sind(x)中,x的單位是角度,sind(30.0)的值為0.5。函數(shù)可以嵌套使用,例如sin(sin(x)),sqrt(exp(x))第二十六頁,共四十五頁,編輯于2023年,星期一種別參數(shù)變量在聲明時(shí),計(jì)算機(jī)會(huì)在內(nèi)存為其分配一定的存儲(chǔ)空間;數(shù)據(jù)的存儲(chǔ)以字節(jié)為單位。方法:在聲明變量時(shí),設(shè)置其”種別參數(shù)(kind)”。例如:integer(kind=4)::areal(kind=8)::b回憶:8位(bit)二進(jìn)制數(shù)稱為1個(gè)字節(jié)(Byte),即:8bit=1B1024B=1MB;1024MB=1GB;1024GB=1TB;PB,EB,ZB……變量所占的內(nèi)存空間越多,可以存放的數(shù)值就越大。那么,編程者是否可以自己為變量的存儲(chǔ)空間指定大小呢?對(duì)多數(shù)編譯器來說,kind的數(shù)值就代表變量在內(nèi)存中所占的字節(jié)數(shù);種別參數(shù)還有其他設(shè)定方法:integer(4)::aReal*8::b如果在聲明變量時(shí),不指定kind的數(shù)值,則采取默認(rèn)的種別參數(shù)值。對(duì)于整型和實(shí)型數(shù)據(jù),默認(rèn)的種別參數(shù)值為4;思考:1個(gè)字節(jié)的空間可以存放的最大整數(shù)有多大?若是無符號(hào)編碼,取值范圍為[0,255];對(duì)于有符號(hào)編碼,取值范圍為[-128,127]第二十七頁,共四十五頁,編輯于2023年,星期一不同種別的整型和實(shí)型數(shù)據(jù)取值范圍:種別參數(shù)取值范圍integer(kind=1)-128-127integer(kind=2)-32768-32767integer(kind=4)-2147483648-2147483647integer(kind=8)-9223372036854775808-92233720368547758087real(kind=4)±1.1754944E-38-±3.4028235E+38real(kind=8)±2.23E-308-±1.79E+308對(duì)于雙精度的超大數(shù)值,科學(xué)記數(shù)法采用D而不用E,如:5.2D39kind=4的實(shí)型數(shù)據(jù)稱為:單精度的數(shù)據(jù),可存取有效數(shù)字位數(shù)6-7位。kind=8

的實(shí)型數(shù)據(jù)稱為:雙精度的數(shù)據(jù),可存取有效數(shù)字位數(shù)15位。第二十八頁,共四十五頁,編輯于2023年,星期一字符型數(shù)據(jù)的種別參數(shù)我們知道,計(jì)算機(jī)中存儲(chǔ)的是二進(jìn)制的數(shù)字,那么,對(duì)于字符(例如英文字母、阿拉伯?dāng)?shù)字以及標(biāo)點(diǎn)符號(hào)等),計(jì)算機(jī)是如何存儲(chǔ)的?需要制定一個(gè)標(biāo)準(zhǔn),把“各種常用的字符”與“數(shù)字”進(jìn)行對(duì)應(yīng):目前最通用的編碼系統(tǒng)是:ASCII碼。全稱:AmericanStandardCodeforInformationInterchange,美國標(biāo)準(zhǔn)信息交換代碼ASCII碼是個(gè)單字節(jié)編碼系統(tǒng),每個(gè)字符占一個(gè)字節(jié)(8位二進(jìn)制數(shù)字)。采用無符號(hào)整數(shù)進(jìn)行編碼,因此取值范圍為[0,255],共表示256個(gè)字符。關(guān)于ASCII碼表的數(shù)字與字符的對(duì)照表,請(qǐng)參看課本580頁附錄B,這里列舉一些常用字符的ASCII碼值:大寫字母A-Z:65-90;小寫字母a-z:97-122;空格:32每個(gè)字符占一個(gè)字節(jié),因此,字符型數(shù)據(jù)的種別參數(shù)值是1.第二十九頁,共四十五頁,編輯于2023年,星期一常量的種別參數(shù)常量也可以設(shè)置種別參數(shù)!對(duì)于數(shù)值型和邏輯型常量,可在后面加一下劃線,再跟種別參數(shù): 15_2:表示種別為2的整型數(shù)(采用2個(gè)字節(jié)來存儲(chǔ)該整數(shù)) 285.32_2:表示種別為2的實(shí)型數(shù)(強(qiáng)制采用2個(gè)字節(jié)來存儲(chǔ)該實(shí)數(shù)) .true._1:表示種別為1的邏輯型常量對(duì)于字符常量,采用前綴法(且只能設(shè)為1)。例如:1_’abc’對(duì)常量設(shè)置種別有何意義?有時(shí)對(duì)常量專門設(shè)置種別參數(shù),而不使用默認(rèn)的種別,可以保證數(shù)據(jù)存儲(chǔ)的精度。如右側(cè)程序所示。第三十頁,共四十五頁,編輯于2023年,星期一與種別參數(shù)相關(guān)的函數(shù)函數(shù)kind(x)

獲得變量x的種別參數(shù)值。若想知道Fortran存儲(chǔ)某數(shù)值所需要的kind值,可采用以下兩個(gè)函數(shù): selected_int_kind(n):

如果想要記錄n位整數(shù),所應(yīng)聲明的Kind值。 selected_real_kind(n,e)

存儲(chǔ)n位有效數(shù)字位數(shù)、指數(shù)達(dá)到e位的浮點(diǎn)數(shù),所需要的kind值。第三十一頁,共四十五頁,編輯于2023年,星期一變量的‘參數(shù)’屬性在聲明一個(gè)變量時(shí),可同時(shí)說明它的屬性。變量的屬性可以有多種,下面介紹“參數(shù)(parameter)”屬性。格式:在數(shù)據(jù)類型和種別之后,雙冒號(hào)之前,注明參數(shù)屬性的關(guān)鍵字parameter,如:real,parameter::pi=3.14159上句中定義pi的值恒為3.14159,在以后的可執(zhí)行語句中不能再被賦值更改。若想用其他的pi值重新運(yùn)行程序,只需修改此聲明語句,提高了編程效率。以后還將學(xué)習(xí)變量的其他屬性如:數(shù)組(dimension)、意圖(intent)等屬性。程序中的數(shù)據(jù),有些是永不改變的常數(shù),如圓周率、重力加速度等。這些常數(shù)可以用一個(gè)變量名來表示(如pi,G),在聲明時(shí)把屬性設(shè)置為‘參數(shù)’(parameter)。Fortran77中的用法:RealpiParameter(pi=3.14159)第三十二頁,共四十五頁,編輯于2023年,星期一Fortran的格式化輸入輸出因此,用戶有必要按自定義的格式進(jìn)行輸入輸出,稱為格式化輸入輸出。前面所學(xué)習(xí)的輸入輸出語句(以輸入輸出a、b的值為例):輸入語句:read(*,*),a,b或read*,a,b輸出語句:write(*,*),‘a(chǎn)=’,a,‘b=’,b或print*,‘a(chǎn)=’,a,‘b=’,b以上輸入輸出語句的共同特點(diǎn)是:格式,都采取fortran默認(rèn)的格式(以*表示),稱為簡單輸入輸出,又稱表控輸入輸出,采用系統(tǒng)默認(rèn)的標(biāo)準(zhǔn)格式,是最簡單的一種輸入輸出方式。但是,這種輸入輸出格式的顯示效果并不美觀:例如當(dāng)a=3,b=5時(shí),輸出結(jié)果為下圖所示:存在太多不必要的空格不同的編譯器系統(tǒng)對(duì)表控輸出格式有不同的規(guī)定,有的系統(tǒng)規(guī)定輸出整型數(shù)據(jù)時(shí)占13列,有的規(guī)定占10列;本例中,整型數(shù)據(jù)占了13列。第三十三頁,共四十五頁,編輯于2023年,星期一格式化輸入輸出格式化輸入: Read(設(shè)備號(hào),格式說明串),變量列表 Read格式說明串,變量列表格式化輸出: Write(設(shè)備號(hào),格式說明串),輸出項(xiàng)列表 Print格式說明串,輸出項(xiàng)列表格式化輸入輸出,與簡單(表控)輸入輸出的區(qū)別在于:格式說明串由用戶自定義,而非星號(hào)’*’。其中,格式說明串是一個(gè)字符串,其形式為:

’(格式編輯符)’或

“(格式編輯符)”格式編輯符含有輸出項(xiàng)的數(shù)據(jù)類型、所占寬度等信息;一個(gè)格式說明串可以有多個(gè)編輯符,用逗號(hào)隔開,每個(gè)編輯符對(duì)應(yīng)一個(gè)輸入(輸出)對(duì)象。第三十四頁,共四十五頁,編輯于2023年,星期一w表示字段所占的總寬度(總列數(shù),包括負(fù)號(hào)),如果數(shù)據(jù)不足w位,前補(bǔ)空格。如果數(shù)據(jù)超出w位,則輸出w個(gè)’*’。例如: integer::a=29,b=-352 print’(I4,i7,I3)’,a,b,b

輸出結(jié)果為(‘□’代表空格): □□29□□□-352***(1).整型編輯符:Iw分別等于4,7,3。3個(gè)整型編輯符與3個(gè)輸出項(xiàng)一一對(duì)應(yīng)m表示:至少要輸出m位數(shù)字(不包括負(fù)號(hào))。如果實(shí)際寬度多于m,將按實(shí)際長度輸出,前置空格補(bǔ)全。如果數(shù)據(jù)不足m位,則用前置零填滿。例如: Integer::a=29,b=-352 Print’(I4.2,I7.4)’,a,b

輸出結(jié)果為:□□29□□-0352一般形式:Iw[.m]編輯符I大小寫都可;

這里用w和m代指正整數(shù),[]表示.m是可選項(xiàng)I編輯符用作格式化輸出時(shí):例如:I7.4(w=7,m=4)表示寬度總共7列,并且至少要輸出4位數(shù)字第三十五頁,共四十五頁,編輯于2023年,星期一I編輯符用作格式化輸入(read)時(shí):例如:read(*,‘(I4,I5,I5)’),i,j,k或:read‘(I4,I5,I5)’,i,j,k例如,

read(*,‘(I4,I5,I5)’),i,j,k輸入:3□,34□56□-6789?會(huì)得到i,j,k的值分別為:i=3,j=3456,k=-678Read(*,*),a對(duì)應(yīng)于:Read*,a輸入時(shí),數(shù)據(jù)之間可按規(guī)定的字段總寬度進(jìn)行緊密輸入,也可以用逗號(hào)間隔,逗號(hào)會(huì)強(qiáng)行終止前一數(shù)據(jù)的總寬度;不能用空格作間隔,空格會(huì)占用字段總寬度。第三十六頁,共四十五頁,編輯于2023年,星期一(2).實(shí)型編輯符:F一般形式:Fw.dF編輯符用作格式化輸出時(shí):W表示字符總寬度(包括小數(shù)點(diǎn)和負(fù)號(hào)),d(不可缺省)表示小數(shù)的位數(shù)。格式化輸出時(shí)的規(guī)則:數(shù)據(jù)不足w位時(shí),用前置空格補(bǔ)全;超過w位時(shí),輸出w個(gè)星號(hào)。小數(shù)位數(shù)<d位時(shí),用尾0補(bǔ)全小數(shù)位數(shù)>d位時(shí),小數(shù)部分四舍五入。例:real::x=20.24,y=-5.4,z=0.12579Print“(F10.3,F3.1,F5.2)”,x,y,z□□□□20.240***□0.13輸出結(jié)果為:第三十七頁,共四十五頁,編輯于2023年,星期一F編輯符用于格式化輸入時(shí):與整型編輯符類似,可以嚴(yán)格按照格式符來輸入,也可按數(shù)學(xué)習(xí)慣來輸入,這時(shí)各數(shù)據(jù)要用逗號(hào)分隔,不能用空格分隔。輸入的數(shù)據(jù)如果沒有小數(shù)點(diǎn),fortran會(huì)按編輯符的寬度進(jìn)行截取,并按編輯符規(guī)定的小數(shù)點(diǎn)位置自動(dòng)給數(shù)據(jù)加上小數(shù)點(diǎn)。Read’(F3.2,F4.1)’,a,bPrint*,a,b從鍵盤輸入:1234□567?如果用戶輸入了小數(shù)點(diǎn),但和編輯符不一致,則按編輯符的總寬度進(jìn)行截取,小數(shù)點(diǎn)的位置以用戶輸入的為準(zhǔn):Read’(F6.1,F3.1)’,a,bPrint*,a,b從鍵盤輸入:1.23□45678?第三十八頁,共四十五頁,編輯于2023年,星期一(3).實(shí)型指數(shù)編輯符:E一般形式:Ew.d[Ee]

([]內(nèi)為可選部分)W為字符的總寬度,d為小數(shù)部分的寬度。整個(gè)數(shù)據(jù)是一個(gè)規(guī)格化的小數(shù)后跟10的n次冪。用作格式化輸出時(shí):默認(rèn)情況下,指數(shù)部分默認(rèn)總共占4列,其中,字母’E’占一列,’+’或’-’占一列,指數(shù)的數(shù)字部分占2列。

例如:實(shí)數(shù)x=356.123,則語句: write(*,’(E10.2)’),x的輸出結(jié)果為:

□□0.36E+03若想自己指定指數(shù)的數(shù)字部分所占列數(shù),可設(shè)置選項(xiàng)Ee中的e: write(*,‘(E10.2E3)’),x的輸出結(jié)果為

□0.36E+003E編輯符用作格式化輸入時(shí),其規(guī)則和F編輯符類似。第三十九頁,共四十五頁,編輯于2023年,星期一字符型編輯符:A輸出字符串常量,還可把字符串常量直接寫在格式串中,例如:使用格式:A[w]A編輯符用于格式化輸出時(shí):截取字符串的前w位進(jìn)行輸出:例如:Print‘(a3)’,‘a(chǎn)bcd’輸出結(jié)果為:abc字符串長度不足w位時(shí),前補(bǔ)空格:例如:Print‘(a5)’,‘a(chǎn)bcd’輸出結(jié)果為:□abcd

w可以缺省,這時(shí)字符串將全部輸出。例如:Print‘(a)’,‘a(chǎn)bcd’輸出結(jié)果為:abcd兩條Print語句等價(jià)第四十頁,共四十五頁,編輯于2023年,星期一A編輯符用于格式化輸入時(shí):w表示截取

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論