第一節(jié)計算機基礎知識

  一個計算機系統可分為兩部分:硬件和軟件。

  一、硬件的組成和功能

  計算機的硬件由以下部分組成:中央處理器(即CPU)、內存儲器、輸入輸出設備、外存儲器。

  中央處理器包括運算器和控制器?刂破鞯闹饕饔茫鞘褂嬎銠C能自動地執(zhí)行存放在內存儲器的程序。運算器的作用則是進行加、減、乘、除等運算,F代中央處理器的形式通常是一個集成電路芯片。

  網內存儲器的功能是保存大量的程序和數據等信息。通常,內存儲器只能在計算機開機(通電)時才能保存信息;一旦關機,它保存的信息通常也隨之丟去。因此,內存儲器不能用來永久保存信息,F代的內存儲器通常由若干個集成電路芯片組成。內存儲器通常又簡稱為內存。

  當需要永久保存信息時,一般使用外存儲器。外存儲器有很多形式,常見的有磁盤、光盤、磁帶、閃存等。

  輸入輸出設備包括輸入設備、輸出設備和既能輸入又能輸出的設備。它們起著把各種信息(程序、數據、命令等)輸入計算機以及把各種處理結果從計算機中輸出的重要功能。常見的輸入輸出設備有鍵盤、磁盤機、顯示器、打印機等等。

  二、軟件的組成及功能

  軟件是指各種程序及其總和。軟件對于計算機的使用是必需的。軟件可分為系統軟件和非系統軟件兩類。系統軟件包括操作系統、編譯程序和解釋程序、各種程序設計語言等等。非系統軟件主要是指各種實用程序,包括用戶自己編寫的程序。

  操作系統的功能是提高計算機的使用效率和方便用戶使用計算機。操作系統是用戶與計算機之間的接口。

  各種程序設計語言可用來編寫程序。程序設計語言分為機器語言、匯編語言和高級語言三個層次。計算機能直接接受的只是以二進制數表示的機器語言。匯編語言是機器語言的符號表示并且需要翻譯成機器語言才能執(zhí)行。用高級語言編寫的程序更是必須通過編譯程序或解釋程序翻譯成機器語言才能供機器執(zhí)行。常用的高級語言有BASIC、FORTRAN、C等等。

  用機器語言或匯編語言編寫的程序一般效率較高、執(zhí)行速度較快;而用高級語言編寫的程序則一般效率較低、執(zhí)行速度較慢。但用高級語言編寫程序要比用機器語言或匯編語言編寫程序容易些。

  實用程序是非常豐富的,可用于各種各樣的具體目的。用戶也可自己編寫各種實用程序。

  三、數制轉換轉

  計算機內的數可有二進制、八進制、十六進制、十進制等不同的表現形式。人們多習慣于用十進制,計算機則主要使用二進制。因為同一個數可表示成不同進制的形式,故常有必要進行數制間的轉換。

  我們可以一般地描述r進制,其中r是一個大于1的正整數。r進制有如下特點:(1)數的每一位只能取r個不同的數字,其符號集是{0,1,…r-1};(2)逢r進位,r進制數的從小數點開始向左的第i位數(i=0,l,…,m)的權是ri,從小數點開始向右的第i位數(i=I,2,…,m)的權是ri.我們用()r表示括號內的數是r進制數。

  因此,對r進制數(amam-1…ala0a-1a-2…a-n)r按權展開的表達式為:(amam-1…ala0a-1a-2…a-n)r=am×rm+am-1×rm-1+……+a1×r1+a0×r0+a-1×r-1+a-2×r-2+……+a-n×r-n(7-1-1)

  例如,對十進制數,r=10,符號集為{0,1,2,3,4,5,6,7,8,9}.對十六進制數,r=16,符號集為{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}.不同數制之間的轉換,對于整數部分,往往可直接按定義進行,即直接法,也可用余數法轉換。采用余數法時,若要將r進制的整數M轉換成t進制數的整數,則把M除以t并取余,再把上述得數除以t并取余,……,直至不能再除時,最后的商也作為余數。所有的余數按從后到前的次序依次從左到右排列就構成了所要求的t進制數。

  【例7-1-1】把(1101011)2轉換成十進制數。

  【解】用直接法。

  (1101011)2=1×26+1×25+0×24+1×23+0×22+1×21十1×20=(107)10

  【例7-1-2】把(107)10轉換成二進制數。

  【解】用余數法。107/2得53余1;53/2得26余1;26/2得13余0;13/2得6余1;6/2得3余0;3/2得1余1.把最后的得數1亦作為余數,把所有的余數按從后到前的次序從左到右排列得:(107)10=(1101011)2不同數制之間的轉換,對于小數部分,可用取整法,即:要將r進制數的小數M轉換成t進制數的小數時,把M乘t,取整數部分;又取上一步得數的小數部分再乘t,再取整數部分;……;直至完畢或達到要求的位數。然后把各整數按從前到后的次序從左到右排列,即構成所求的小數部分。

  第二節(jié)自學

  第三節(jié)計算機程序設計語言

  一、程序設計語言

  計算機程序設計語言又稱算法語言。目前國內外比較通用的算法語言有多種,如BASIC、FORTRAN、PASCAL、ALGOL、C等。隨著算法語言本身的發(fā)展和完善,同一語言中還有不同的標準文本問世。每種語言都有其自身的規(guī)則和特點,但也有共性的地方。

  在目前通用的算法語言中,FORTRAN語言特別適用于科學計算,又是為我國廣大結構工程技術人員較為普遍掌握的一種語言,因此,本次注冊結構工程師考試的內容選為FORTRAN語言。FORTRAN語言于50年代出現于美國。1966年,美國國家標準化協會(ANSI)公布了標準FORTRAN(ANSIX3.9-1966)‘,1977年對其進行了修訂,1978年,將其定為國家標準,稱為FORTRAN77(ANSIX3.9-1978).以下有關內容,主要參照FORTRAN77的標準進行說明。

  二、FORTRAN的程序構成和基本規(guī)定

 。ㄒ唬┏绦驑嫵

  一個完整的FORTRAN程序由一個主程序或一個主程序和若干個子程序組成。主程序與每個子程序都是一個獨立的程序單位,稱為一個程序模塊。關于程序的構成,有如下一些基本規(guī)定。

  1.程序由若干行組成。

  2.在FORTRAN中,程序行分為語句行和注釋行。

 。1)語句行由FORTRAN語句組成,包括執(zhí)行語句和非執(zhí)行語句。執(zhí)行語句使計算機在運行時產生某些操作,如賦值語句、輸入輸出語句等。非執(zhí)行語句為計算機在編譯或運行時提供某種信息,本身不產生操作,如說明語句、格式語句等。

 。2)注釋行又稱為非語句行,在程序中起注釋作用,便于程序的編寫、修改和維護。

  3.FORTRAN規(guī)定,每個語句行只能寫一個語句;但當語句長度超過規(guī)定的一行范圍、或者為表達清晰起見需要將一個語句分行書寫時,可以采用連續(xù)行。連續(xù)行的第一行稱為始行,以后各行稱為續(xù)行。

  4.FORTRAN語句可以有標號。標號作為一個語句被其他語句引用的標志。在同一個程序單位中,不能出現相同的語句標號。

  5.程序單位的最后一行語句,必須是END語句。如果一個FORTRAN語句行與注釋行的集合,最末沒有END,可稱其為一個語句塊或程序段,但不能作為一個程序單位。

 。ǘ⿻鴮懸(guī)則

  1.FORTRAN77的字符集由26個英文字母、10個數字和其他13個專用字符組成。

  2.一個程序行有80列,每列寫一個字符。3.程序行的第1列如寫上C或*,表示該行為注釋行。注釋內容可寫在該行中除第1列外的任何位置。

  4.在語句行中,程序行的第1列至第5列為語句標號區(qū),標號區(qū)內是最多為5位的無符號整數;程序行的第6列為續(xù)行區(qū),若某行為續(xù)行,則標號區(qū)必須空白,且第6列為非0的任一FORTRAN77字符(不能為空格);第7列至第72列為語句區(qū)。

  例如,在邊長為B的正方形中挖一個半徑為R的圓,計算剩余的面積;若B<2R,則給出相關信息。該問題的FORTRAN程序可編寫如下。

  CComputationofarea.READ*,B,RIF(B.LT.2*R)THENWRITE(*,10)

  10FORMAT(‘Errormessage:Blessthan2*R’)

  ELSEWRITE(*,,(“AREA=”,F10.2))

  $B*B-3.14159*R*RENDIFEND本例中,第1行為注釋行,第5行為帶標號的語句,第7~8行為連續(xù)行,符號$為續(xù)行標志。

 。ㄈ┏A颗c變量1.常量指程序中其值固定不變的一些量,包括以下6種類型。

  (1)整形常量,也稱整數。一個整數可采用正、負號和數字字符表示,正號可以省略……

 。2)實型常量,也稱實數?梢杂眯敌问交蛑笖敌问奖硎。用指數形式表示的實數如11.3E5,+11.3E+5,1.E-12,-.23E12等。

 。3)雙精度實型常量,或稱雙精度實數。雙精度實數也是實數。但在一般的微型計算機中,實數的有效位數為7位,雙精度實數的有效位數可以達到15~17位。雙精度實數的表示方法,除在指數形式的表達中用字符D代替E以外,其余和實數相同。

 。4)復型常量,簡稱復數。在FORTRAN中,用一對圓括弧括起來的兩個實數表示。如(12.0,-6.E2)表示復數12.0—600.0i.(5)邏輯型常量。FORTRAN中的邏輯型常量有兩個值:.TRUE.與。FALSE.。

  (6)字符型常量,也稱為字符串。計算機系統使用的若干個字符,用一對單引號括起來后,就作為字符串。

  2.變量指在程序運行期間可以改變的量。

  (1)變量的類型與常量相對應,分為整型變量、實型變量、雙精度實型變量、復型變量、邏輯型變量與字符串變量。

  (2)變量名按一定的規(guī)則命名。在FORTRAN中,變量名采用1至6個字符(數字或字母),其中第一個字符必須是字母。FORTRAN77規(guī)定,變量名書寫時不區(qū)別字母的大寫與小寫,例如ABc與aBC都指同一個變量。(3)變量類型的說明方法。

  1)I-N隱含規(guī)則。在程序單位中沒有其他說明時,以字母I,J,K,L,M,N中的任一個字母打頭命名的變量都是整型變量。

  2)用類型說明語句規(guī)定變量類型。例如:

  INTEGERA,COUNTREALICOUNTDOUBLEPRECISIONXINGCOMPLEXDUPLOGICALJUGCHARACTER頭10FILENM分別表示變量A,COUNT為整型,ICOUNT為實型,XING為雙精度實型,DUP為復制,JUG為邏輯型,FILENM為字符型變量,其長度為10個字符。

  3)用隱含說明語句IMPLICIT語句,可以將程序單位中以某一字母開頭的所有變量指定為所需類型。例如:

  IMPLICITINTEGER(A,C),REAL(I-K)

  指定了以A與C字母開頭的所有變量都是整型變量,以字母I至K開頭的所有變量為實型變量。

  類型說明語句和隱含說明語句只在本程序單位中有效;它們必須放在程序單位所有可執(zhí)行語句的前面,而IMPLICIT語句又必須在所有的類型說明語句的前面。確定變量類型的三種方法中,類型說明語句的優(yōu)先級最高,I-N規(guī)則的優(yōu)先級最低。  (五)各種運算符及其運算的優(yōu)先級

  1.算術運算符。FORTRAN有五個算術運算符,它們是:

  加法運算符+

  減法運算符-

  乘法運算符*

  除法運算符/乘幕運算符**

  這五個算術運算符的運算順序是:

  (1)乘幕運算符**優(yōu)先級最高;

 。2)乘法與除法運算符*,/優(yōu)先級次之;

 。3)加法與減法運算符十,一優(yōu)先級最低。

  對于同一優(yōu)先級的兩個運算符,按“先左后右”的原則進行計算。

  2.關系運算符。FORTRAN有六個關系運算符,用于比較兩個表達式相等或不等。它們是:

  大于GT.

  大于或等于。GE.

  小于LT.

  小于或等于。LE.

  等于EQ.不等于。NE.

  經過關系運算符比較后,得到一個邏輯型的值。例如,整型變量I的值為10,J的值為12,則I.LT.J的結果為“真”(。TRUE.),而I.EQ.J的結果為“假”(。FALSE.)。

  3.邏輯運算符。FORTRAN有五個邏輯運算符,它們是:

  邏輯與。AND.兩個邏輯型量都為“真”時,其值為“真”,否則為“假”,邏輯或。OR.兩個邏輯型量都為“假”時,其值為“假”,否則為“真”;

  邏輯非。NOT.一個邏輯型量為“真”時,其值為“假”,否則為“真”,邏輯等。EQV.兩個邏輯型量等值時,其值為“真”,否則為“假”,邏輯不等。NEQV.兩個邏輯型量不等值時,其值為“真”,否則為“假”。

  邏輯運算符中,除了邏輯非運算符。NOT.只有一個運算對象外,其余四個邏輯運算符均有兩個運算對象。

  邏輯運算符的優(yōu)先級如下:

 。1)NOT.

 。2)AND.

 。3)OR.

 。4)EQV.與。NEQV.這兩個運算符按“先左后右”的原則進行計算。

  三、賦值語旬賦值語句的一般格式為:

  變量名=表達式其中,連接變量名和表達式的符號“”稱為賦值號。在FORTRAN77中,有三種賦值語句:算術賦值語句,邏輯賦值語句和字符賦值語句。

 。ㄒ唬┧阈g賦值語句

  1.算術賦值語句中賦值號右邊是算術表達式。

  算術表達式可以是單個變量或數組元素,可以是用算術運算符號連接起來的數值計算過程。

  (1)算術表達式中的各個數據量(常量或變量)的類型一般應該一致。如果不一致,FORTRAN程序在運行中先將其進行轉換,再進行計算。例如實型變量和整型變量進行計算時,整型變量的數值先被轉換為實型。

 。2)算術表達式計算中,特別應注意兩個整型量之間的除法(稱為整除)。例如,算術表達式10.0-2/4*10.0的計算過程是10.0–0*10.0=10.0-0.0=10.0如果表達式寫為10.0-2/4.0*10.0,則計算過程是來源:www.examda.com10.0-2.0/4.0*10.0=10.0-0.5*10.0=5.0因為2/4是整除,其結果為0,而進行2/4.0的計算時,整型量2先被轉化為實型。

  2.算術賦值左邊只能是數值型變量名或數值型數組元素。

  如果賦值號左邊的變量與右邊的表達式類型不一樣時,系統將自動把右邊表達式計算的結果轉換為與左邊變量的類型一致后再賦給該變量。

  (二)邏輯賦值語句在邏輯賦值語句中,賦值號左邊為邏輯變量或邏輯型數組元素,右邊為一個邏輯表達式。

  (三)字符賦值語句

  1.字符賦值語句賦值號的左邊為字符變量或字符型數組元素。

  2.賦值號的右邊為字符表達式,可以是單個字符串或用字符運算符連接起來的字符串。字符運算符只有一個,表示為礦,含義為連接該符號兩邊的字符串。

  3.執(zhí)行字符賦值語句時,應注意字符串的長度與賦值號右邊變量或數組元素的長度的關系。例如:

  CHARACTER*4A,B*6,CA=‘FILEB=A//’‘NAME’C=B(5:6)

  定義字符型變量時,根據類型說明語句的規(guī)定,A、C長度為4,而變量B因有專門說明,其長度為6.程序運行后,變量A的長度與賦值號右邊字符串長一致,A的值為‘FILE’;而B的長度小于‘FILE’和‘NAME’兩個字符串長度之和,因此多余的字符被截去,B的值為‘FILENA’;C的結果為‘NA__’,其中最后兩格為空格符,這是因為C的長度為4,大于字符串‘NA’的長度,于是在其右邊補上2個空格符后形成4個字符長再賦值給C.在上面的程序例中,出現表達式B(5:6),稱為“子串”,表示取出字符串的一部分,本例中,表示將B的字符串‘FILENA’中的第5個字符至第6個字符取出。

  四、循環(huán)語句

  (一)DO語句

  DO語句的一般形式為:

  DO n V=el,e2,e3

  n循環(huán)體

  其中,n為語句標號;V為循環(huán)控制變量,它只能是簡單變量(整型或實型),不能是表達式;el,e2,e3分別為循環(huán)控制變量的初值、終值與增量(步長),它們都可以是表達式,當e3為1時可以省略不寫。循環(huán)體是若干語句的集合,其中最后一個語句稱為循環(huán)終端語句;若循環(huán)體只有一個語句,則該語句也就是終端語句。終端語句必須有標號n.

  在DO循環(huán)執(zhí)行時,首先計算表達式el,e2,e3的值,并將它們化為與循環(huán)控制變量V的類型一致;然后將初值賦給循環(huán)控制變量v,并計算需要循環(huán)的次數;最后根據循環(huán)次數重復執(zhí)行循環(huán)體中的語句,并每次執(zhí)行完循環(huán)體后,將循環(huán)控制變量增值一次,循環(huán)次數減少一次。當循環(huán)次數為零時,則結束循環(huán),轉向程序規(guī)定的下一個語句。

 。ǘ├^續(xù)語句CONTINUECONTINUE

  是一個可執(zhí)行語句,其功能是使程序的流程繼續(xù)到邏輯上的下一個語句。

  FORTRAN77規(guī)定,循環(huán)終端語句必須是一個可執(zhí)行語句,但不能是GOTO語句、塊IF語句、ELSE語句、ELSEIF語句、ENDIF語句、00語句、STOP語句、END語句。由于這些限制,通常用CONTINUE語句作為循環(huán)的終端語句。當然,CONTINUE語句也可用在其他場合。

 。ㄈ┭h(huán)嵌套

  使用循環(huán)嵌套可以實現多重循環(huán)。這時應注意各重循環(huán)的層次和循環(huán)變量的關系。例如,編寫一個計算乘法表的程序段,可以寫為:

  DO101=1,9

  DO8J=l,9

  IJ=I*j8CONTINUE10CONTINUE

  本例中,外層循環(huán)控制變量I初值為1,終值為9,內層循環(huán)控制變量J初值為外層循環(huán)控制變量I的當前值,終值為9.外層的第1次循環(huán),內層經過9-1+1=9次循環(huán),依次計算1×1=1,1×2=2,…,1×9=9,外層的第2次循環(huán),內層經過9-2+1=8次循環(huán),依次計算2×2=4,2×3=6,…,2×9=18……

 。ㄋ模┦褂醚h(huán)語句應注意的若干問題

  1.正確選定循環(huán)變量的初值。比如,對累加問題和連乘問題,變量初值不正確,使影響最終結果。

  例如計算m=l!十2!+……十10!,采用循環(huán)語句編寫程序,涉及到累加和連乘。其程序可編寫如下:

  m=0

  n=1

  DO 20I=1,10

  n=n×I

  m=m十n

  20 CONTINUE

  PRINT*,m

  END

  例中,n用于存放連乘結果,其初值設定為1,而m用于存放累加結果,其初值設定為0.2.DO語句可以和轉換語句,條件語句等結合起來使用,此時應注意從循環(huán)體內可以轉向循環(huán)體外,但不允許從循環(huán)體外轉向循環(huán)體內;從內層循環(huán)中可以轉向外層循環(huán),但不允許從外層循環(huán)轉向內層循環(huán)中。

  3.當內外層循環(huán)體的終端語句相同,且兩個終端語句之間沒有其他語句時,可以合并使用一個終端語句。例如,前面計算乘法表的程序段可以寫為:

  DO 10I=1.9

  DO10J=I,9

  IJ=I*j

  10 CONTINUE

  或寫為

  DO 10 I=1,9

  00 10J=I,9

  10 IJ=I*J