FORTRAN90第8章.ppt_第1頁(yè)
FORTRAN90第8章.ppt_第2頁(yè)
FORTRAN90第8章.ppt_第3頁(yè)
FORTRAN90第8章.ppt_第4頁(yè)
FORTRAN90第8章.ppt_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、FORTRAN程序設(shè)計(jì),計(jì)算機(jī)中心 2006.3,8.1 字符型數(shù)據(jù)基礎(chǔ),8.5 字符型數(shù)據(jù)作為過(guò)程變?cè)昂瘮?shù)值,8.2 字符型數(shù)據(jù)的輸入輸出,8.6 程序舉例,8.3 字符型數(shù)組,8.4 用于字符處理的內(nèi)在函數(shù),Visual Fortran 90 程序設(shè)計(jì),8.1.1 字符型常量與變量,說(shuō)明(1)字符區(qū)分字母大小寫 (2)空格為有效字符 (3)字符不受fortran90字符集的限制 (4)單撇號(hào)為有效字符時(shí),改寫為兩個(gè)單撇號(hào)或雙撇號(hào) (5)種別參數(shù)用前綴法表示 (6)長(zhǎng)度=0,長(zhǎng)度為0:由兩個(gè)連續(xù)的撇號(hào)表示 或“”,字符常量的寫法:,一串字符 或 “一串字符”,8.1 字符型數(shù)據(jù)基礎(chǔ),長(zhǎng)度為

2、字符的個(gè)數(shù): 起止界不算 兩個(gè)單撇號(hào)或雙撇號(hào)算一個(gè) 空格為有效字符算一個(gè),長(zhǎng)度計(jì)算,字符型變量,(1)字符變量的含義:對(duì)應(yīng)內(nèi)存一片連續(xù)的存儲(chǔ)空間 (2)字符變量應(yīng)先說(shuō)明其類型、長(zhǎng)度、名字,再使用,比其它變量多長(zhǎng)度說(shuō)明,Character (len=n1,kind=n2 ),屬性列表: 變量名=初值,例:CHARACTER (LEN=20,kind=2): last_name Character(kind=3,len=8):Var,Au Character(8,3):Var,Au,個(gè)別優(yōu)于統(tǒng)一,長(zhǎng)度在前,種別在后,只有長(zhǎng)度說(shuō)明而無(wú)種別參數(shù)說(shuō)明時(shí),采用以下說(shuō)明: Character(len=7):

3、A 或 Character(7):A 或character*7:A 變量后指明其具體長(zhǎng)度(個(gè)別說(shuō)明): CHARACTER (8): strg, strh, stri*12,不說(shuō)明長(zhǎng)度,長(zhǎng)度默認(rèn)為1,character:a,b,c,說(shuō)明語(yǔ)句的寫法,長(zhǎng)度可為整型表達(dá)式,但要加括號(hào) 例: character(2):a,b(2+3) 有時(shí)可把長(zhǎng)度值寫成一個(gè)星號(hào),但要加括號(hào) Character(*):CH,PARA Character(2): CH,PARA*(*) 使用范圍: (1)具有PARAMETER屬性的字符常量 Character(*),parameter:para=FORTRAN_90 字

4、符串長(zhǎng)度取對(duì)應(yīng)的字符常量的長(zhǎng)度。 (2)用字符變量作為虛元時(shí),虛元的長(zhǎng)度取對(duì)應(yīng)實(shí)元的長(zhǎng)度 虛元可以和任意長(zhǎng)度的實(shí)元相結(jié)合,有利于提高子程序的通用性。,子串變量:一個(gè)字符變量值中連續(xù)的一部分稱為字符子串。 例:已知 A=123456 則 123,456是A的子串,子串變量的寫法,字符變量名(e1:e2) e1和e2為整型表達(dá)式,表示起始和終止位置。1=e1=e2=長(zhǎng)度L 例:子串變量寫法 A(1:3) 123 A(4:5) 45 A(3: 3) 3 A(:4) 1234 A(4:) 456 A(:) 123456,8.1.2 字符子串,字符表達(dá)式,用字符運(yùn)算符把字符常數(shù)、字符變量、字符數(shù)組元素等

5、字符型數(shù)據(jù)連接起來(lái)的有意義的式子。,字符運(yùn)算符,1、字符連接符“/” 功能:將兩個(gè)字符型數(shù)據(jù)按順序首尾連接起來(lái),成為一個(gè)新的字符型數(shù)據(jù)。 例:abc/def 得 abcdef,注意:不滿足交換律,8.1.3 字符表達(dá)式與字符賦值語(yǔ)句,2、關(guān)系運(yùn)算: 例:abcada,比較規(guī)則: 1.兩個(gè)字符比較時(shí),以它們的ASCII碼值決定大小。 2.字符串比較:從左到右逐個(gè)字符進(jìn)行比較 若所有字符完全相同,則表達(dá)式相等,否則,以第一次出現(xiàn)不等字符的比較結(jié)果為準(zhǔn)。 3.若兩個(gè)字符串中字符個(gè)數(shù)不等時(shí),則將較短的字符串后補(bǔ)足空格后再比較。,ASCII順序:空格 0 9 , A Z , a z 32 4857 65

6、90 97122,(1) 寫法 :字符變量或子串變量V=字符型表達(dá)式e 功能:計(jì)算e;轉(zhuǎn)化為V的長(zhǎng)度;賦值 例:character : LONG*8 , SHORT*3 LONG=ABCD; SHORT =ABCDEF LONG: SHORT:,長(zhǎng):截取左邊 短:右補(bǔ)空格,LONG(1:2)=SS 子串賦值不影響其它子串的值 注:同一變量名出現(xiàn)在賦值號(hào)兩側(cè),有警告錯(cuò)誤,但仍可執(zhí)行。 錯(cuò)例: NAME=NAME/SUN,字符型賦值語(yǔ)句,表控格式輸入,例如: CHARACTER(5): A,B,C Read *,A,B,C 輸入: CHINA,NEW,SHANGHAI 結(jié)果: A值 CHINA ;

7、B值NEW ;C值SHANG 注意 (1):長(zhǎng)度轉(zhuǎn)換同賦值 長(zhǎng):截取左邊 短:右補(bǔ)空格 (2) :表控格式輸入字符型數(shù)據(jù)時(shí) 必須輸入用單撇號(hào)或雙撇號(hào)做定界符的字符串。 各常量之間應(yīng)用逗號(hào)分隔。,8.2 字符型數(shù)據(jù)的輸入與輸出,(1)用字符型編輯符:Aw w是規(guī)定的輸入寬度. (2)用字符型編輯符:A 寬度w的值同長(zhǎng)度的值,注意: (1)長(zhǎng)度轉(zhuǎn)化規(guī)則是: 若長(zhǎng)度L=w,輸入的字符個(gè)數(shù)恰好夠用。 若Lw,輸入的字符不能滿足,在右邊補(bǔ)足L-w各空格 (2)格式輸入:字符串兩邊不應(yīng)加定界符,不用空格分隔數(shù)據(jù),否則會(huì)當(dāng)作有效字符處理。,與賦值語(yǔ)句,表控格式相反,字符輸入,用戶規(guī)定格式輸入,例: Char

8、acter(3):a,b,c Read(*,fmt=(a3,a2,a4)a,b,c 如輸入123,1234, 123 則a值12 B值3 C值12,字符輸入,表控格式輸出語(yǔ)句: CHARACTER(3):A,B PRINT*,A,B,用戶規(guī)定的輸出語(yǔ)句 CHARACTER(3):A,B PRINT(A2,A4),A,B,長(zhǎng):截取左邊 短:左補(bǔ)空格,字符輸出,如果具有Dimension屬性,就成為字符數(shù)組。 例: character(3),dimension(4):a A的每個(gè)元素的長(zhǎng)度均為3 A(1)(1:1)表A(1)中的第1個(gè)字符,8.3 字符型數(shù)組,1.求字符串長(zhǎng)度函數(shù) LEN:字符串的

9、長(zhǎng)度 例:LEN(ASD ) 值6 LEN_TRIM:去掉尾部空格后的長(zhǎng)度。 例:LEN _TRIM(ASD ) 值3 2.除去字符串尾部空格函數(shù)(TRIM) 例:TRIM(ASD ) 值A(chǔ)SD 3.字符與碼值轉(zhuǎn)換函數(shù)(Ichar,iachar,char,achar) Iachar 和achar 只針對(duì)ASCII碼(其他編碼不可)。 例: char(82):R ichar(REST):82 例:char(ichar(ab)+4)/123的值為E123,8.4 用于字符處理的內(nèi)在函數(shù),4.子串位置函數(shù)(INDEX) INDEX(STR1,STR2):返回STR2在STR1中的起始位置。 例:in

10、dex(follfodcfod,fod)值為5 例:character(4):a A=fod Index(follfodcfod,A)的值為0 5.字符串比較函數(shù)(LEG、LGT、LLE和LLT) LEG(STR1,STR2) 6.首、尾部空格調(diào)整函數(shù)(ADJUSTL和ADJUSTR) ADJUSTL(STR1),用于字符處理的內(nèi)在函數(shù),例8-4 用自定格式輸入和輸出字符型數(shù)據(jù)。(掌握數(shù)據(jù)輸入格式) 如輸入:FORTRAN,CHARACTER(LEN=1),DIMENSION(1:7):A 1、READ(7A1),(A(I),I=1,7) 輸入:FORTRAN 2、READ*,(A(I),I=

11、1,7) 輸入:F,O,R,T,R,A,N,CHARACTER(7):A 1、READ*,A 輸入FORTRAN 2、READ(A):A 輸入FORTRAN,程序設(shè)計(jì),例8-5 從鍵盤上輸入5個(gè)城市的名稱(用漢語(yǔ)拼音表示),然后按從小到大的順序排序。(排序算法同數(shù)值型) 輸入:Harbin,Shanghai,Anda,Beijing,Daqing,CHARACTER(10),DIMENSION(5):CITY CHARACTER(10):TEMP READ*,CITY DO I=1,4 K=I DO J=I+1,5 IF(CITY(J)CITY(K)K=J ENDDO TEMP=CITY(I)

12、;CITY(I)=CITY(K);CITY(K)=TEMP,ENDDO WRITE(*,(A)CITY END,程序設(shè)計(jì),習(xí)題8-3(1)輸出*號(hào)圖形 算法:引入LINE存放每一行的數(shù)據(jù)(長(zhǎng)度為圖形的第一列到最右) LINE子串賦值 輸出LINE LINE回歸為空串,重復(fù)循環(huán),PROGRAM MAIN IMPLICIT NONE CHARACTER(11):LINE INTEGER:I,J,DO I=1,5 DO J=6-I,12-I LINE(J:J)=* ENDDO PRINT*,LINE LINE= ENDDO END,觀察法,不能少,程序設(shè)計(jì),1.字符型變量作為虛元: 可采用固定長(zhǎng)度,

13、長(zhǎng)度說(shuō)明也可采用(*)。 例8-7 編寫函數(shù)子程序,實(shí)現(xiàn)字符內(nèi)在函數(shù)LEN_TRIM的功能。在主程序中輸入一個(gè)字符串,對(duì)去掉尾部空格部分的字符子串中的字符逆序存放后輸出。 輸入:Good morning! (1)去尾部空格算法:從右往左順序查找非空格字符 (2)逆序算法:交換首尾對(duì)應(yīng)元素,8.5.1 字符型數(shù)據(jù)作為函數(shù)過(guò)程變?cè)?FUNCTION LENTRIM(STRING)RESULT(LENTRIM_RESULT) IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN):STRING INTEGER:LENTRIM_RESULT,I LENTRIM_RESULT

14、=0 DO I=LEN(STRING),1,-1 IF(STRING(I:I)/= )THEN LENTRIM_RESULT=I EXIT ENDIF ENDDO; END,字符型數(shù)據(jù)作為函數(shù)過(guò)程變?cè)?PROGRAM CHAR_INVERSE IMPLICIT NONE CHARACTER(20):STRING1,C*1 INTEGER:I,K,LENTRIM READ(A),STRING1 K=LENTRIM(STRING1) DO I=1,K/2 C=STRING1(I:I) STRING1(I:I)= STRING1(K-I+1:K-I+1) STRING1(K-I+1:K-I+1)=C

15、 ENDDO; PRINT*,STRING1; END,字符型數(shù)據(jù)作為函數(shù)過(guò)程變?cè)?2.字符型數(shù)組作為虛元 虛元是字符型數(shù)組時(shí),對(duì)應(yīng)的實(shí)元必須是字符型數(shù)組或數(shù)組元素等。 若長(zhǎng)度不一致時(shí),則虛實(shí)數(shù)組的元素間并不是一一對(duì)應(yīng)結(jié)合。而是按數(shù)組變?cè)吭氐乃凶址M(jìn)行一個(gè)一個(gè)字符地相結(jié)合。 例如虛元a,長(zhǎng)度為3,實(shí)元b長(zhǎng)度為5,a,b虛實(shí)結(jié)合規(guī)則為: FUNCTION F(A)RESULT(FRESULT) CHARACTER(3),DIMENSION(4):A 主程序調(diào)用語(yǔ)句:K=F(B) CHARACTER(5),DIMENSION(4):B,字符型數(shù)據(jù)作為函數(shù)過(guò)程變?cè)?例8-11 統(tǒng)計(jì)英文文章中

16、單詞及空格的個(gè)數(shù)。 共N行,每行40個(gè)字符 算法: 按行統(tǒng)計(jì),計(jì)數(shù)器語(yǔ)句統(tǒng)計(jì)個(gè)數(shù) NW=NW+1 NB=NB+1 引入標(biāo)記變量標(biāo)記是否是單詞的首字母: LABEL=0 當(dāng)前是空格 LABEL=1 當(dāng)前是字母 首字母: 前一次LABEL=0 ,當(dāng)前LABEL=1,8.6 程序舉例,CHARACTER(40):LINE INTEGER:LABEL,NW,NB,N,I,J,K NW=0; NB=0 READ*,N DO I=1,N READ(A),LINE LABLE=0; K=LEN_TRIM(LINE) DO J=1,K IF(LINE(J:J)= )THEN LABEL=0; NB=NB+1 ELSEIF(LABEL=0)THEN LABEL=1; NW=NW+1 ENDIF,ENDDO ENDDO PRINT*,NW,NB END,程序舉例,例: 驗(yàn)證一字符串是否為“回文”。 算法: 去尾部空格 首尾對(duì)應(yīng)字符比較,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論