二進制、算法描述、pascal基礎、基本結構、一維數組_第1頁
二進制、算法描述、pascal基礎、基本結構、一維數組_第2頁
二進制、算法描述、pascal基礎、基本結構、一維數組_第3頁
二進制、算法描述、pascal基礎、基本結構、一維數組_第4頁
二進制、算法描述、pascal基礎、基本結構、一維數組_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章第一章 數值計算數值計算數制是人們利用符號進行計數的科學方法。數制有很多種,在計算機中常用的數制有:十進制,二進制,八進制和十六進制。 一、四種不同進制的書寫方式1 十進制數 人們通常使用的是十進制。它的特點有兩個:有 0,1,2.9 十個基本字符組成,十進制數運算是按“逢十進一”的規(guī)則進行的. 在計算機中,除了十進制數外,經常使用的數制還有二進制數和十六進制數.在運算中它們分別遵循的是逢二進一和逢十六進一的法則. 2 二進制數 二進制數有兩個特點:它由兩個基本字符 0,1 組成,二進制數運算規(guī)律是逢二進一。 為區(qū)別于其它進制數,二進制數的書寫通常在數的右下方注上基數 2,或后面加 B

2、表示。例如:二進制數 10110011 可以寫成(10110011)2,或寫成 10110011B。計算機中的數據均采用二進制數表示,這是因為二進制數具有以下特點: 1) 二進制數中只有兩個字符 0 和 1,表示具有兩個不同穩(wěn)定狀態(tài)的元器件。例如,電路中有,無電流,有電流用 1 表示,無電流用 0 表示。類似的還比如電路中電壓的高,低,晶體管的導通和截止等。 2) 二進制數運算簡單,大大簡化了計算中運算部件的結構。 二進制數的加法和乘法運算如下: 0+0=0 0+1=1+0=1 1+1=10 00=0 01=10=0 11=1 由于二進制數在使用中位數太長,不容易記憶,所以又提出了十六進制數.

3、 3.十六進制數 十六進制數由十六個基本字符 09 以及 A,B,C,D,E,F 組成(它們分別表示十進制數 015) ,十六進制數運算規(guī)律是逢十六進一。十六進制的書寫通常在數的右下方注上基數16,或后面加 H 表示。例如:十六進制數 4AC8 可寫成(4AC8)16,或寫成 4AC8H。4.八進制數八進制數由八個基本字符 07 組成(它們分別表示十進制數 07) ,八進制數運算規(guī)律是逢八進一。八進制的書寫通常在數的右下方注上基數 8,或后面加 O 表示。例如:八進制數127 可寫成(127)8,或寫成 127O。補充:為了與其他進制數有區(qū)別,規(guī)定沒有下標的數字為十進制數,另外十進制數也可以后

4、面加 D 表示。例如 183D。二、不同進制數的轉換方法1數的位權概念 一個十進制數 110,其中百位上的 1 表示 1 個 102,既 100,十位的 1 表示 1 個 101,即10,個位的 0 表示 0 個 100,即 0。 一個二進制數 110,其中高位的 1 表示 1 個 22,即 4,低位的 1 表示 1 個 21,即 2,最低位的 0 表示 0 個 20,即 0。 一個十六進制數 110,其中高位的 1 表示 1 個 162,即 256,低位的 1 表示 1 個 161,即16,最低位的 0 表示 0 個 160,即 0。 可見,在數制中,各位數字所表示值的大小不僅與該數字本身的

5、大小有關,還與該數字所在的位置有關,我們稱這關系為數的位權。十進制數的位權是以 10 為底的冪,這個 10 稱為十進制的基數;二進制數的位權是以 2 為底的冪,基數是 2;十六進制數的位權是以 16 為底的冪,基數是 16。數位由高向低,以降冪的方式排列。2二進制數、十六進制數、八進制數轉換為十進制數(按權求和) 非十進制數轉換為十進制數的規(guī)律是相同的。把非十進制數按位權形式展開多項式和的形式,求其最后的和,就是其對應的十進制數簡稱“按權求和” 。 例如:把(1001.01)2轉換為十進制數。 解:(1001.01)2 =1*8+4*0+2*0+1*1+0*(1/2)+1*(1/4)=8+0+

6、0+1+0+0.25=9.25把(38A.11)16轉換為十進制數 解:(38A.11)16 =3162+816+10160+116-1+116-2 =768+128+10+0.0625+0.0039 =906.0664 3十進制數轉換為非十進制數 整數轉換(除基取余法)一個十進制整數轉換為二進制整數通常采用除二取余法,即用 2連續(xù)除十進制數,直到商為 0,逆序排列余數即可得到 例:將 25 轉換為二進制數 解:252=12 余數 1 122=6 余數 0 62=3 余數 0 32=1 余數 1 12=0 余數 1 所以 25=(11001)2 同理,把十進制數轉換為十六進制數時,將基數 2

7、轉換成 16 就可以了. 例:將 25 轉換為十六進制數 解:2516=1 余數 9 116=0 余數 1 所以 25=(19)16 4二進制數與十六進制數之間的轉換 由于 4 位二進制數恰好有 16 個組合狀態(tài),即 1 位十六進制數與 4 位二進制數是一一對應的.所以,十六進制數與二進制數的轉換是十分簡單的. (1)十六進制數轉換成二進制數,只要將每一位十六進制數用對應的 4 位二進制數替代即可簡稱一位分四位. 例:將(4AF8B)16轉換為二進制數. 解: 4 A F 8 B 0100 1010 1111 1000 1011 所以(4AF8B)16=(1001010111110001011

8、)2 (2)二進制數轉換為十六進制數,分別向左,向右每四位一組,依次寫出每組 4 位二進制數所對應的十六進制數簡稱四位合一位. 例:將二進制數(111010110)2轉換為十六進制數. 解: 0001 1101 0110 1 D 6 所以(111010110)2=1D6H 轉換時注意最后一組不足 4 位時必須加 0 補齊 4 位。注意:以上所說的二進制數均是無正、負符號的數。這些數的范圍如下表:無符號位二進制數位數數值范圍十六進制范圍表示法8 位二進制數0255 (255=28-1)000FFH16 位二進制數065535 (65535=216-1)0000H0FFFFH32 位二進制數023

9、2-100000000H0FFFFFFFFH十進制、二進制、八進制與十六進制數字對照表十進制二進制八進制十六進制00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F三、二進制數的四則運算二進制數進行四則運算可以用豎式運算,運算法則與十進制類似。1 加法:0+0=0,0+1=1,1+0=1,1+1=0(進位)2 減法:0-0=0,1-0=1,1-1=0,0-1=1(借位)3 乘法:0*0=0,0*1

10、=0,1*0=0,1*1=14 除法:無法則,判斷被除數與除數的大小關系,每步商 0 或者商 1。四、總結數制是對數值的表示方法,不同的進制數進行轉化的前提是它們表示相同的數值。習題習題1.下列無符號數中,最小的數是() A.(11011001)2 B.(75)10 C.(37)8 D.(2A)16 2.與二進制數 101.01011 等值的十六進制數為( ) A)A.B B)5.51 C)A.51 D)5.583.(0.5)10=( ) 16.A)0.1 B)0.75 C)0.8 D)0.254.算式(2047)10一(3FF)16+(2000)8的結果是( ) 。A) (2048)10 B

11、) (2049)10 C) (3746)8 D) (1AF7)165十進制數 2003 等值于二進制數( )。A)11111010011 B)10000011 C)110000111 D)010000011l E)11110100116運算式(2008)10(3723)8 的結果是( )。A) (-1715)10 B) (5)10 C) (-5)16 D) (111)2 E) (3263)87 十進制數 2004 等值于八進制數( ) 。A. 3077 B. 3724 C. 2766 D. 4002 E. 3755 8十進制算術表達式 :3*512 + 7*64 + 4*8 + 5 的運算結果

12、,用二進制表示為( )A. 10111100101 B. 11111100101 C. 11110100101 D. 11111101101 9. 和十進制數 23 的值相等的二進制數是( ) 。A. 10110 B. 11011 C. 11011 D. 10111 E. 1001110. (3725)8 + (B)16 的運算結果是( ) 。A. (3736)8 B. (2016)10C. (1111110000)2 D. (3006)10 E. (7B0)16第二章第二章 算法概述算法概述計算機為什么能處理各種不同的問題呢?這是由于人們事先對各類問題進行了分析、確定了解決問題的方法和步驟,

13、然后根據它編寫出計算機程序,再讓計算機執(zhí)行這個程序,才得到最后結果。在學習程序設計時,既要掌握所使用的某一種計算機語言(如 PASCAL 語言) ,更要掌握解題的方法和步驟,這是程序設計中的關鍵,語言只是一個工具,只懂得語言的規(guī)則并不能保證能編制出有效的、高質量的程序。本章所討論的“算法” ,就是研究解題的步驟和方法的。一、算法的概念做任何事情都有一定的步驟。例如,如何把大象放進冰箱里?第一步,把冰箱門打開,第二步,把大象放進去,第三步,把冰箱門關上。再例如,如何計算 1+2+5+9+11 的值?先將 1和 2 相加得 3,再將 3 加 5 得 8,再將 8 加 9 得 17,最后再加 11

14、得 28。解決這兩個問題都要經過有限的、事先設計好的步驟。為解決一個問題而采取的方法和步驟,稱為“算法” 。算法是解題方法的精確描述,解決一個問題的過程就是實現一個算法的過程。對同一個問題,往往有不同的解題方法,各種方法有優(yōu)劣之分,為了有效的進行運算,應當選擇合適的算法。我們只討論計算機算法,即計算機可以實現的算法。顯然,讓計算機執(zhí)行“1+2”的運算是可以實現的,而讓計算機執(zhí)行“把大象放進冰箱”的算法是不行的(至少在目前階段如此) 。計算機算法一般分為兩大類:數值運算和非數值運算。例如,求若干數之和,求方程的根,求一個圓的面積等,都屬于數值計算。而將若干個人名按字母順序排序,圖書情報資料檢索、

15、計算機繪圖等則屬于非數值計算。二、簡單算法舉例1有兩個杯子 A 和 B,分別盛滿酒和醋,要求將它們互換(即 A 杯原來盛放酒,現要改盛醋,B 杯則相反) 。根據常識,必須增加一個空杯 C 作為過渡。其算法可以表示為:步驟 1:先將 A 杯中的酒倒到 C 杯中;步驟 2:再將 B 杯中的醋倒在 A 杯中;步驟 3:最后將 C 杯中的酒倒到 B 杯中。這就是以后要用到的使兩個變量的值交換的方法。2從 10 個數中挑選出最大的數。這個問題的思路可以用“打擂臺”來比喻:先有任意一個人在臺上,然后第二個人與他比武,勝者留在臺上,如此繼續(xù)下去,直到第十個人比完為止(一共比 9 次) ,最后留在臺上者為勝。

16、算法當然可以表示如下:步驟 1:把第 1 個數放在一個匣子 A 中;步驟 2:將第 2 個數與 A 匣子中的數相比,大者放入 A 匣子中;步驟 3:將第 3 個數與 A 匣子中的數相比,大者放入 A 匣子中;步驟 10,最后將第十個數與 A 匣子中的數相比,大者放入 A 匣子中,此時 A 匣子中的數就是最大的數。這樣寫算法雖然是正確的,但太繁瑣,可以簡化如下:用 A 存儲需要比較的數,用 N 記錄比較次數。步驟 1:把第 1 個數放入 A 中,設置 N 的值為 0(表示此時已經比較了 0 次) ;步驟 2:將下一個數與 A 中的數相比,大者放入 A 中;步驟 3:使 N 的值增加 1(表示增加

17、一次“比較次數” ) ;步驟 4:如果 N 的值小于 9,則重新執(zhí)行步驟 2,如果 N 的值大于或等于 9(表示已經比較了 9 次以上) ,停止循環(huán)。此時 A 中的數就是最大的數。顯然,這種用“循環(huán)”來表示的算法比較簡練。如果題目要求改為“從 10000 個數中挑選最大者” ,只要將算法中第 4 步中的 9 改為 999 即可。三、算法的特征一個算法應具有以下特點:1有窮性,一個算法應包含有限個操作步驟,而不能是無限的。例如讓歌唱家唱一支永遠唱不完的歌,這是不合理的,不能稱為“算法” 。所謂有窮性往往指在合理范圍之內,如讓計算機執(zhí)行一個循環(huán)算法,循環(huán)到 10000 年才結束,雖然它不是無限的,

18、但超過了合理的程度,也不能算作“算法” 。2正確性。算法的每一步都應當是明確無誤的。不能含義模糊,使執(zhí)行者無所適從。例如:“吃完飯上公園去”這句話是不明確的,是指吃完早飯,還是中飯或晚飯?一個算法不應有“多義性” 。3有效性。算法中的每一步都應該能有效地執(zhí)行,執(zhí)行算法最后應該能得到確定的結果。例如一個數被零除,就不能進行有效地操作。對于使用現成算法的人來說,可以把一個算法看作是一個“黑箱子” ,在“黑箱子”中是怎樣工作的,他可以不必關心,他只要提供某些輸入,便可得到確定的輸出。例如,有一個制造零件的自動化的機器,人們只需將毛坯輸入,便可得到加工好的零件。至于機器內部是怎樣工作的,對使用者來說可

19、不必深入了解。但對于程序設計人員來說,不僅會使用現成的算法,還要會設計算法,即要設計出算法中的每一個步驟。第三章第三章 PASCALPASCAL 程序設計語言基礎程序設計語言基礎一、一、Pascal 程序的組成程序的組成下面是一個簡單的 Pascal 程序:Program pf;Varx,y:integer;BeginReadln(x);y:=sqr(x);Writeln(y);Readln;End.一個 Pascal 程序由如下兩部分組成:1 程序首部程序首部是程序的開頭部分,由保留字 program 后接程序名組成,由分號結束。Pascal 程序首部可以省略。2 程序體程序體是程序的說明部

20、分,由說明部分和執(zhí)行部分組成。(1)程序說明部分:Pascal 要求用戶在程序中所使用的標號、常量、類型、變量、記錄、文件以及過程和函數除了 Pascal 自己預先定義的標準量之外,都必須在說明部分說明后才能在程序執(zhí)行部分使用。說明部分中的次序為:標號說明區(qū)、常量說明區(qū)、類型說明區(qū)、變量說明區(qū)、函數與過程說明區(qū)。(2)程序執(zhí)行部分:緊接著說明部分的 begin 和 end 之間的部分為程序的執(zhí)行部分。它由一系列語句組成,所有的語句完成程序設計的任務。語句之間用“;”隔開,允許一行寫多個語句,也允許一個語句寫幾行。最后一行的 end 后加 “ ”號表示結束。3基本符號、保留字和標識符31 基本符

21、號(1)字母,包括大寫和小寫字母。在 Pascal 語言中,除單引號內的字母之外,字母無大小寫之分,也就是說大寫與小寫字母被認為是相同的字符。(2)數字,即從 0 到 9。(3)特殊符號,包括:+ * / = = ; : 等。32 保留字保留字是 Pascal 語言中一些有特殊含義的英文單詞,例如前面例子中的program、var、begin、end 等。這些單詞已經被 Pascal 語言自己所使用,而且都有專門的用途,不能用于其他場合,又稱關鍵字。Pascal 語言中的保留字包括program、fuction、procedure、case、do、and、not、or、set、if、then、

22、else 等,我們在以后的學習中會逐步掌握。3 3 標識符標識符是以字母或下劃線開頭的字母數字下劃線序列。例:A,B_L,J,MAX,X23 都是合法的標識符,而 3X,X-Y,X&Y 則不是合法的標識符。標識符可用來表示常量、變量、類型、文件、函數、過程或程序的名字。標識符分為兩大類:(1)標準標識符標準常量:false、true、maxint;標準類型:integer,real,char,boolean,text。標準函數:abs,chr,ln,ord,sin,sqr,sqrt 等(2)自定義標識符由用戶自己在程序首部或說明部分進行定義,自定義標識符時要注意以下幾點:不能與保留字同

23、名,避免與標準標識符同名,最好有一定的含義,增加程序的可讀性,書寫可用大寫、小寫及大小寫字母混合使用。二、數據類型、常量、變量及說明方法二、數據類型、常量、變量及說明方法數據類型不僅確定該類型數據項的表示和取值范圍,而且還確定了它所能參加的各種運算。在 Pascal 語言中,無論常量還是變量都必須屬于一個確定的數據類型。1標準數據類型11 整數類型整數類型包括正整數、負整數和零。整數只能由正負號和數字組成,不允許出現其他字符,“+”可以省略。例如:123,0,-256,+234 都是合法的整數;1234A,0.01,12.34 都不是合法的整數。Pascal 有 integer 型整數,它的取

24、值范圍是 32768(minint) 32767(maxint) 。Pascal 還支持以下四種整型。名 稱類型標識符數據表示范圍短整型Shortint-128127長整型Longint-2147483648 2147483647字節(jié)型Byte0 255字 型Word0 6553512 實數類型實數類型包括正實數、負實數和零。它的類型標識符為 real。有兩種方法表示實數。(1)十進制表示法:就是我們日常使用的帶小數點的表示方法。(2)科學表示法:就是采用指數形式的表示方法。如 3.4E3 表示 3.4*103,即 3400;-3.4E-3 表示-3.4*10-3,即-0.0034。指數部分不

25、能為小數,尾數部分不能省略,如 3.4E1.2,E+12 均為非法。實數的絕對值在 1E-38 到 1E38 之間。13 字符類型目前微機上廣泛使用的 ASCII 碼字符集滿足 Pascal 對字符集的要求,字符類型的數據就是括在兩個單引號之間的 Pascal 字符集。如A, 1, :分別表示字符 A,數字字符 1 以及冒號。字符類型在 Pascal 語言中用類型標識符 char 來表示,它是有序的。我們常用的數字和字母的先后順序是:數字 09、大寫字母 AZ、小寫字母 az。此外還用類型標識符 string 表示字符串。1.4 布爾類型布爾類型的數據只有兩個:真和假,分別用標準常量 true

26、(真)false(假)表示。布爾類型的類型標識符為 boolean,它是有序的,并且 false 5);7下列變量說明中,不合法的是( )A)var a = real;B)var r:real;)var red:integer; )var i1,i2:integer;8下列函數值是整型的是( )A)chr(23)B)ord(false) )succ(false)odd(98)9下列函數不可能是布爾類型的是( )A)odd(x)B)ord(x))pred(x))succ(x)10設 x 是實型變量,下列表達式能將 x 四舍五入保留兩位小數的是( )A)round(x)B)round(x)/100

27、)round(x*100)/100)round(x*10)/1011表達式 35 div 3 mod 4 的值是( )A)0B)2)3)612表達式 sqrt(abs(-100)*sqr(round(2.7) )的值是( )A)20B)30)20.0)30.013把整數 5 轉換為字符5的表達式是( )A)chr(5)+ ord(0)B) chr(5 + ord(0) )chr(5+ord(0)chr(5+ord(0) )附:附:lazarus 軟件使用基本方法軟件使用基本方法Lazarus 是 freepascal 的集成開發(fā)環(huán)境,是奧賽推薦使用的軟件,英文界面。1啟動:啟動:方法一,雙擊桌

28、面上的“l(fā)azarus”圖標;方法二, “開始”菜單“程序”“l(fā)azarus”“l(fā)azarus” ;2窗口介紹:窗口介紹:“object inspector”窗口與使用無關,可以關閉;“form1”窗口與使用無關,可以關閉;“l(fā)azarus editor v0.9.10 beta”窗口中的菜單、工具欄用來創(chuàng)建、保存、調試程序;“l(fā)azarus source editor”窗口用來編寫、修改源程序;“messages”窗口用來顯示程序調試運行的提示信息;3新建程序新建程序啟動 lazarus 后關閉“object inspector”窗口和“form1”窗口,在關閉“form1”窗口時如果提示“

29、save file unit1.pas before closing for form1?” ,就點擊“no”關閉。在“l(fā)azarus editor v0.9.10 beta”窗口中點擊“file”菜單,選擇“new” 。在彈出的“new”窗口中選擇“project”下的“custom program”項, “description”欄內會顯示“custom program a freepascal program”內容,單擊“ok” 。將“l(fā)azarus source editor”窗口中所有內容刪除,即可開始輸入源程序。4保存程序保存程序在源程序的輸入過程中,為了防止意外情況導致的信息丟失

30、,應該及時的保存文件,在“l(fā)azarus editor v0.9.10 beta”窗口中點擊“file”菜單,選擇“save” ,在彈出的對話框中首先更改保存位置,然后更改文件名,例如“t1.lpi” ,然后點擊“保存” 。此時你會看到源程序的程序名自動變?yōu)?t1;以后繼續(xù)保存這個源程序的時候,就不會出現 save 窗口。5調試程序調試程序將源程序輸入完成并保存后,在“l(fā)azarus editor v0.9.10 beta”窗口中點擊“run”菜單,選擇“run” ,或者點擊“l(fā)azarus editor v0.9.10 beta”窗口中的綠色三角形工具,系統(tǒng)會編譯執(zhí)行源程序,如果沒有錯誤編譯

31、成功,會彈出“execution stopped”窗口,點擊“ok”即可,并且在“messages”窗口中顯示“project t1 successfully built. :)”內容;如果存在錯誤編譯失敗,在“messages”窗口中會顯示出錯的位置、原因等信息。6產生的文件產生的文件在執(zhí)行完成第 4 步,即保存程序后,會在目標位置處看到兩個文件“t1.lpi” 、 “t1.pas”和一個文件夾“backup” 。這個文件夾起備份作用,兩個文件分別為工程文件和源程序文件,缺一不可。在執(zhí)行第 5 步,即調試程序并且成功后,會在目標位置處看到多出兩個文件“t1.exe” 、“t1.o” ,其中“

32、t1.exe”為編譯生成的可執(zhí)行文件,能脫離 lazarus 環(huán)境直接運行。第四章第四章 順序結構的程序設計順序結構的程序設計順序結構是一種最簡單、最基本的結構,它的特點是在這個結構內按由上到下的書寫順序執(zhí)行。4.1 賦值語句賦值語句對程序已經定義的變量,如何取值?通常使用賦值語句來給變量提供數據,它具有計算和賦值的功能,程序中所進行的各種運算,大多數是在賦值語句中實現的。(1)格式(2)含義變量標識符:=表達式;賦值語句的執(zhí)行是“先計算,后賦值” 。即先計算表達式的值,然后將值賦給變量,具有計算和賦值的雙重功能。例如:pi1:=3.1415*6 是計算 3.1415*6 的值,然后將其值賦值

33、給變量 pi1。例 41 下面的程序執(zhí)行后,變量 b、c、d 的值是多少?(3)注意注意:“:=”稱為賦值號,要注意不能與關系運算符“=”混淆。只有在賦值語句中才能使用賦值號。賦值號具有方向性,是將賦值號右邊表達式的值計算出來,賦予賦值號左邊的變量,所以賦值號的左邊只能是變量;常量說明中只能用等號,如例 3-1。賦值號兩邊的類型應該相同。只有一點可以例外,那就是當表達式的值為整型時,它可以自動轉化成實型后賦給一個實型變量。例如:如果已經定義 r 為實型變量,那么 r:=4.0 與 r:=4 都是合法的。但反之則不行。即,如果定義 i 為整型變量,那么 i:=4.0 是非法的。一個賦值語句只能給

34、一個變量賦值。變量可以進行多次賦值,但賦值后的常量將在程序中一直保持不變,直到該變量重新被賦值成其他的值。例如:語句 a,b:=3.4 是非法的,應該寫成 a:=3.4;b:=3.4;被賦值的變量本身可以作為因子參與運算,如:n:=n+1;s:=s+x;在程序的執(zhí)行部分應使每個變量都有確定的值,一般的 pascal 不會自動給一個變量賦初值,因此,應注意對變量賦初值后才可參加運算。例如:n:=0;n:=n+2;為了深入理解賦值語句,看下面的例子:例 4.2 寫出執(zhí)行下面的程序后,變量 a,b 的值。語句變量 a變量 bA:=3;3B:=a;33B:=a+1;34A:=a+1;44B:=b+1;

35、45Program p4_1;Const a=256;Var b,d:integer;C:real;BeginB:=a div 16;C:=a/b;D:=a;End.Program p4_2;Var A,b:integer;BeginA:=3;B:=A;B:=a+1;A:=a+1;B:=b+1;End.從表中可以看出 a,b 最后的值。這個例子中賦值語句 a:=a+1 的含義是:將變量 a 原來的值加上 1 以后,再賦給變量 a。通常賦值語句 a:=a+1 起到“計數器”的作用,與之相類似,a:=a+x 起到“累加器”的作用;a:=a * x 起到“累乘器”的作用。特別應當說明的是,賦值語句只

36、能將一個確定的值賦給一個變量,而不能將一個未知數賦給一個變量。PASCAL 中的賦值語句的執(zhí)行結果是將一個確定的值放到內存中該變量所標識的存儲單元中去。顯然,不能將另一個變量名放到一個數值變量中去,而只能將一個數值放到該變量所標識的存儲單元中去,這是一些初學者容易弄不清除之處。4.2 輸出語句輸出語句寫語句寫語句利用計算機解題時,首先需要將解題的程序裝入計算機,運行程序并輸入程序中所要用到的相應數據,然后由程序來處理,最后要有相應的語句來輸出處理后的結果。也就是說,一個能解決實際問題的程序是不可以沒有輸出語句的。(1)輸出語句的形式及作用格式:格式 1:格式 2:含義:執(zhí)行該語句時,按指定的格

37、式將輸出項的內容輸出。Write 語句是一項接一項地輸出,輸出完最后一項后不換行,write 語句至少必須輸出一項內容;writeln 語句也是一項接一項地輸出,但輸出完最后一項后自動換行,writln 語句允許沒有輸出項,此時該語句不輸出任何內容,只起換行作用。例如,假設已知變量 a,b,c 分別為 2,4,6,則:write(a);write(b);write(c);輸出結果為 2 4 6;而 writeln(a);writeln(b);writeln(c);輸出結果為:246說明:說明:輸出項中括號內的項目內容可以是一組常量、變量、表達式或字符串。一組的含義是可以為一個,也可以是多個。若

38、是多個時,各輸出項之間必須用逗號分隔,最后一個沒有符號。如: write(a+b=,a+b);或 writeln(3,*,n,=,1);輸出項中的各個不同項目其輸出的結果分別是:當輸出項為常量時,直接輸出該常量的值;當輸出項為變量時,輸出該常量存儲單元內的內容,變量允許屬于任何一種標準數據類型;當輸出項為表達式時,則首先對表達式進行計算,然后輸出計算的結果;當輸出項為字符串時,原樣輸出用單引號括起來的字符串中的內容。如有程序段:Write(輸出項) ;WritelnConstA=10; b=20;BeginWriteln(50);Writeln(a);Writeln(a+b);Writeln(

39、a+b=,a+b);End.輸出結果為:501030a+b=30(2)輸出語句的輸出格式在 PASCAL 程序設計中,數據的輸出格式是非常重要的。我們將每一種類型的數據在輸出時所占據的列數稱為場寬,以下是 Pascal 對各種數據定義的標準場寬:數據類型標準場寬實例輸出結果整 型實際整數長度Write(1234);1234實 型25Write(-123.4)-1.2340000000000000e+0002布爾型4 或 5Const t=false write(t);False字符型字符長度Write(PASCAL);PASCAL從上表中我們可以看出,標準場寬就是實際輸出值的場寬,一般來說它不

40、能滿足使用者的各種需要,為此,可以由用戶自己來定義場寬。單場寬單場寬的形式:x:nx 表示要輸出的項目;n 表示輸出 n 時所占的列數,n 應為正整數。如:write(ok!:8)表示項目字符串ok!的場寬是 8。例如 writeln(a+b=:6,1.2:12);輸出結果為:a+b=1.200e+0000雙場寬雙場寬的形式:x:n1:n2雙場寬是用來控制實型數據的輸出格式的。如果希望輸出的實數不用科學記數法形式,而用小數形式,可以使用雙場寬。其中:x 表示要輸出的項目;n1 表示輸出 x 時所占的總列數,包括符號位、整數部分、小數點和小數部分;n2 表示小數部分的列數。n1,n2 應為正整數

41、。如:writeln(-123.456:8:2);輸出結果為:-123.45自定義場寬使用時的注意事項自定義場寬使用時的注意事項自定義場寬的優(yōu)先級高于標準場寬。除實型的場寬定義外,輸出格式一律是左留空、右看齊。實型的場寬輸出時時向小數點看齊,多余的小數位數補零。在數據不突破場寬的限制時,一律按場寬定義輸出;在數據突破了場寬的限制時,是以保證數據的正確輸出為原則的,也就是說,在單場寬的情況下,強行自動將場寬擴展到所需要的位數;雙場寬時,則強行自動將場寬 n1 擴展到所需要的位數(n2 的限制仍然照舊) 。例 4.3 寫出以下程序的輸出結果該程序有五個輸出語句,每個語句的第一個輸出項是按標準場寬來

42、輸出的;第二個輸出項是按自定義場寬輸出的,其輸出結果如下:4.3 輸入語句輸入語句要使變量獲得一個確定的值,在實際的使用中,更多的情況是:程序中需要賦值的變量往往很多或變量的值經常變化。如果輸入數據有所變化時,程序不必進行修改就可得到所要處理的不同結果。也就是說,使程序具有通用性。我們可以在程序運行后從鍵盤輸入變量的值,這就是我們要介紹的語句輸入語句。(1)格式)格式格式 1:格式 2:(2)語義)語義執(zhí)行該語句時,從鍵盤上讀入數據,將其值依次賦給變量名表中的變量,其中變量名表是一串用逗號分隔開的變量標識符。保留字 readln 后可以沒有變量名表,尖括號“”表示此內容可有可無。如果沒有變量名

43、表,這時該語句的作用僅表示讀入一個回車換行符。當輸入的Program p4_3;Var A:integer;b:real;c:char;d:boolean;BeginA:=1357;B:1234.5678;C:=%;D:=true;Writeln(a,a:5);Writeln(b,b:12:5);Writeln(c,c:5);Writeln(d,d:5);Writeln(end:5);End.135713571.2345678000000000e+00031234.56780%truetrueendRead(變量名表)Readln數據個數多于變量個數時,這兩條語句對其的處理為:執(zhí)行 readl

44、n 后多余的數據將被忽略;執(zhí)行 read 后多余的數據要么被忽略,要么被下一個 read 或 readln 語句所讀入。請看下面舉例說明:語句 read(a1,a2,an);它等價于 read(a1);read(a2);read(an);語句 readln(a1,a2, , an);它等價于 read(a1);read(a2);read(an);readln;(3)說明)說明輸入項中的括號應是一組變量。這里一組的含義可以是一個,也可以是多個,若是多個,各變量用逗號分隔,最后一個沒有逗號。如 read(a,b,c,d) ;或 readln(m,n,k) ;。程序運行后,執(zhí)行到 read 或 re

45、adln 語句時,程序處于等待狀態(tài),等待用戶從鍵盤上輸入數據。程序運行后,從鍵盤輸入的數據必須是常量,且輸入的數據一定要與變量類型保持一致。當輸入項中的變量為多個時,要求輸入的相應數據個數不能少于其變量的個數。當輸入的數據個數少于變量個數時,系統(tǒng)仍處于等待狀態(tài),接著輸入的數據無論是換行輸入還是不換行,輸入均有效。輸入整型或實型數據時,數據間用空格或回車鍵分隔,最后一定要有一個回車,表示輸入結束。輸入字符型數據時,數據間不能用空格分隔,可以連續(xù)輸入或用回車鍵一個一個字符分隔輸入,兩端的單引號不要輸入?!纠?4.4】設 I,j,k 是整型變量,現需將 30,20,10 分別賦值給這三個變量,要求

46、寫出對應于下列語句的所有可能的輸入格式。Read(I,j,k) ;【問題分析問題分析】根據要求,可列出如下的所有可能輸入格式:【例例 4.5】設 I,j,k 是字符型變量,現需d,o,s分別賦值給這三個變量,要求寫出對應于下列語句的所有可能的輸入格式。Read(I,j,k) ;【問題分析問題分析】根據要求,列出如上的所有可能輸入格式。(注:輸入 dos 則錯誤,此時 I 為d,j 為 ,k 為o。 )(1)302010(2)302010(3)302010(4)302010(1) dos(2) dos(3) dos(4) dos【例例 4.6】readln(a,b,c) ;readln(I,j,

47、k,l) ;readln(m,n) ;輸入數據:12345678901020讀入結果為:12345 a b c67890 i j k l1020 m n【例例 4.7】read(a,b,c);read(I,j,k,l);read(m,n);輸入數據:12345678901020讀入結果為:12345 a b c I j(多余數據被下一個 read 語句所讀入)67890 k l m n(多余數據被忽略)1020技巧:技巧:在很多時候,為了讓程序運行全部結束后能方便的看到結果,可以在程序的最后添加一個空的輸入語句:readln;4.44.4 復合語句復合語句復合語句是由若干條語句組成的語句序列。

48、每個語句可以是簡單語句,如我們前面所學過的賦值語句、輸出語句等;也可以是我們將在后面介紹的過程語句或結構化語句。各語句之間使用分號來分隔,并用保留字 begin 和 end 將這些語句序列括起來,構成為一條邏輯上的語句,在語法上充當一條語句。復合語句的一般形式是:begin語句 1;語句 2;語句 nend;在這里,begin 與 end 起語句括號的作用,相當于使用了一個語句括號將若干語句括了起來,作為一個語句處理。程序運行時,通常是按書寫的順序去執(zhí)行復合語句內的各個語句。如:表達交換 a,b 兩個變量值的復合語句為:begin x:=a;a:=b;b:=xend;當需要多個語句作為一個語句

49、出現時,復合語句將是必不可少的一種形式。4.54.5 綜合應用綜合應用【例例 4.84.8】從鍵盤輸入一個三位自然數,分離出它的百位、十位與個位上的數字。習題習題一、設已知 a,b,c,d,e,f,g 均為整型變量,a=2,b=4,c=6,d=8,e=10,f=12,g=14。請寫出執(zhí)行下面的寫語句時的輸出結果。1)Write(a,b,c); write(d,e,f); write(g)2)Writel(a,b); writeln; write(c); writeln(d,e); write(f)3)writeln(a,b,c); writeln(d,e,f); writeln(g)4)wri

50、teln; write(a); write(b,c,d,e); writeln(f)5)writeln(a,b,c,d,e,f); writeln; write(g)6)write(a:5,b:4,c:3); writeln; write(d:2,e:1); writeln(f:5,g:3)二、采用下面的語句讀入 a,b,c 的值,如果 a=3.5, b=2.4, c=9.8。問應如何組織輸入數據(寫出各數據行)1)read(a); read(b); read(c)2)readln(a); readln(b); readln(c)3)readln; read(a,b,c)4)readln(a,

51、b); readln(c)5)readln(a); read(b); readln(c)6)read(a); readln; read(b); readln; read(c)三、編程序.將華氏溫度轉換為攝氏溫度,公式為:C=5/9(F-32)其中,F 是華氏溫度,C 是攝氏溫度,F 的值由鍵盤輸入,結果保留兩位小數。輸入輸出樣例Program p4_8;Varx,ge,shi,bai:integer;Beginreadln(x);Ge:=x mod 10;bai:=x div 100;shi:=(x bai * 100) div 10;Writeln(bai=,bai:3); Writeln(

52、shi=,shi:3);writlen(ge=,ge:3);Readln;End.輸入輸出415.0010037.78四、編程序。某工種按時計算工資。每月勞動時間(小時)每小時工資總工資??偣べY中扣除 10%公積金,剩余的為應發(fā)工資。從鍵盤輸入勞動時間和每小時工資,要求編程序打印出應發(fā)工資,結果保留兩位小數。輸入輸出樣例輸入輸出10 1090.00100 5450.00五、編程序。將秒數 x 轉換成 hour:minute:second 的格式,xb”是否成立,其結果不是一個算術值,而是“成立”或“不成立” ,也可以用“真”表示“成立” ,用“假”表示“不成立” 。也就是說,它的結果是一個邏輯

53、值。實現邏輯運算是計算機的一個重要功能。邏輯運算又叫做布爾運算。5.1.1 布爾常量和布爾變量布爾常量和布爾變量1 在在 Pascal 中邏輯常量稱為布爾常量。中邏輯常量稱為布爾常量。只有兩個布爾常量:TRUE(真)和 FALSE(假) 。2. 布爾型符號常量布爾型符號常量在程序的說明部分,可以定義符號常量,例如:CONSTt=TRUE;f=FALSE;在執(zhí)行部分就可以用 t 代表 TRUE,用 f 代表 FALSE。例如:write(t,f)將輸出:TRUEFALSE3.布爾變量。布爾變量。也就是邏輯變量。數值變量用來存放數值,布爾變量用來存放一個邏輯值,即布爾常量。當然,必須先定義后使用。

54、例如:VAR A,B:BOOLEAN;BEGINA:=TRUE;B:=FALSE;在 VAR 定義區(qū)中,定義變量 a 和 b 為布爾類型的變量。BOOLEAN 是預定義標識符,意為“布爾型” 。在執(zhí)行部分可以將 TRUE 賦給布爾變量 a,把 FALSE 賦給布爾變量 b,也可以進行以下的賦值:a:=odd(3) ;odd 是奇數函數,odd(3)的值是布爾常量 TRUE,因此 a 的值為 TRUE。4.布爾型數據是順序型的數據。布爾型數據是順序型的數據。Pascal 將 FALSE 的序號定為 0,將 TRUE 定為 1。因此:Ord(FALSE)=0;Ord(TRUE)=1;Pred(TR

55、UE)=FALSE;Succ(FALSE)=TRUE;但 Pred(FALSE)和 Succ(TRUE)將會出錯。5.1.2 布爾表達式布爾表達式1. 最簡單的布爾表達式最簡單的布爾表達式關系表達式關系表達式下面這些都是關系表達式x0, a=b, sum0, c=d, tu, TRUEFALSE, a=8+x,sumtotal/5關系表達式的值是一個布爾量(TRUE 或 FALSE) ,而不是一個數值。Pascal 中有 6 個關系運算符:, , =, 如果 a=3,b=4,則 ab 的值為真。關系運算符兩側一般應使用同類型的數據。但整型量可以和實型量相比。在比較時,系統(tǒng)先將整型量轉換成實型量

56、,然后再進行比較。可以將關系表達式的值賦給一個布爾變量。例如:若 a 已定義為布爾變量,x 和 s 為數值型變量,則:a:=x1或 a:=s=1;是允許的。布爾表達式的值可以輸出。如果 x 的值為 1.5,則:Write(x1)將輸出邏輯值 TRUE。2. 布爾運算符和布爾表達式布爾運算符和布爾表達式在進行算術運算時,運算的對象是數值量。而布爾運算的對象則是布爾型數據。例如:(x0)AND(x0 和 x0) AND(x3)OR (x3 或 x0)AND(x3)OR (x,=,=,=,例如,當 a 為 TRUE,b 為 FALSE 時,NOT a5) and (Ij+5) or ab and b

57、分析:這個表達式中同時包含了多種運算符,我們可以根據列出的優(yōu)先級順序層層運算,過程如下:A and not (x5) and (Ij+5) or a b and bT T T TF F FT T應特別注意,對關系表達式應加括號,先進行關系運算,得到一個布爾量,再進行布爾運算。5.1.3 布爾類型數據的輸入與輸出布爾類型數據的輸入與輸出將一個布爾型常量賦給一個布爾型變量可以用賦值語句,但不能用 Read 語句從鍵盤輸入一個布爾常量,例如:若 a 已經定義為布爾變量。則企圖用以下語句Read(a)從鍵盤輸入一個布爾值式錯誤的??梢暂敵鲆粋€布爾型數據,例如:writeln(a=,true,b=,fa

58、lse);writeln(a=,a,b=,b);writeln(a=,12);PASCAL 為布爾數據定義的場寬為:TRUE 占 4 列,FALSE 占 5 列。5.2 IF 語句的概念和應用語句的概念和應用5.2.1 IF 語句Pascal 語言提供了選擇執(zhí)行的語句,它根據條件判斷結果能有選擇地執(zhí)行多種情況中的一種情況。實現選擇的語句是條件語句(if 語句)與分情況語句(case 語句) 。IF 語句能方便地進行二分支地結構,這主要在程序中被用作為兩個后續(xù)程序段必選其一地選擇。也就是:當某個條件運行成立時,則須完成某項工作,否則,就必須去做另一項工作或什么也不做。(1)格式格式一:格式二:(

59、2)功能格式一的執(zhí)行過程是:如果條件為真,則執(zhí)行 then 后面的語句 1;如果條件為假,將執(zhí)行 if語句的下一條語句。格式二的執(zhí)行過程是:如果條件為真,則執(zhí)行 then 后面的語句 1,否則執(zhí)行 else 后面的語句2。格式二是完整的一條語句,因此語句 1 后面不應有分號,否則將引起錯誤。在書寫時最好寫成分層縮進的格式,這樣可使程序結構清晰,便于閱讀。如下所示:if 條件If 條件 then 語句 1If 條件 then 語句 1 else 語句 2條件TF語句 1 語句 2then 語句 1else 語句 2;if 語句中,條件一般是布爾表達式,或者是一個布爾型變量,當它的取值為真時,就選

60、擇 then后的語句執(zhí)行;當它取值為假時,就選擇 else 后的語句執(zhí)行。Then 和 else 后的語句可以是單個語句,當需要多條語句時,必須用 begin 和 end 括起來稱為復合語句。要靈活運用 if 語句,關鍵是理解語句中的條件,因此對邏輯運算必須熟練掌握。 0 (x-a)【例例 5.25.2】求 y = a2 x2 (-aa/2)程序分析:這個程序要求根據輸入的 x 和 a 的大小關系,求出不同的 y 值。在執(zhí)行中,先令 y 的值為三個可能的值之一,然后判斷 x 的值是否為其它兩種可能之一,如果是,就將 y 的值改為相應的值。如果兩個 IF 布爾表達式的值都為假,則 y 仍保持原值,這樣可省一個 IF 語句。這是一種

溫馨提示

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

最新文檔

評論

0/150

提交評論