版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章簡單程序無論做任何事情,都要有一定的方式方法與處理步驟。計算機程序設計比日常生活中的事務處理更具有嚴謹性、規(guī)范性、可行性。為了使計算機有效地解決某些問題,須將處理步驟編排好,用計算機語言組成“序列”,讓計算機自動識別并執(zhí)行這個用計算機語言組成的“序列”,完成預定的任務。將處理問題的步驟編排好,用計算機語言組成序列,也就是常說的編寫程序。在Pascal語言中,執(zhí)行每條語句都是由計算機完成相應的操作。編寫Pascal程序,是利用Pascal語句的功能來實現(xiàn)和達到預定的處理要求?!扒Ю镏?,始于足下”,我們從簡單程序學起,逐步了解和掌握怎樣編寫程序。 第一節(jié) Pascal
2、 程序結構和基本語句在未系統(tǒng)學習Pascal語言之前,暫且繞過那些繁瑣的語法規(guī)則細節(jié),通過下面的簡單例題,可以速成掌握Pascal程序的基本組成和基本語句的用法,讓初學者直接模仿學習編簡單程序。 例1.1編程在屏幕上顯示“Hello World!”。 Pascal程序:Program ex11;Begin Writeln(Hello World!); ReadLn;End. 這個簡單樣例程序,希望大家的程序設計學習能有一個良好的開端。程序中的Writeln是
3、一個輸出語句,它能命令計算機在屏幕上輸出相應的內容,而緊跟Writeln語句后是一對圓括號,其中用單引號引起的部分將被原原本本地顯示出來。 例1.2已知一輛自行車的售價是300元,請編程計算a輛自行車的總價是多少?解:若總售價用m來表示,則這個問題可分為以下幾步處理: = 1 * GB3 從鍵盤輸入自行車的數(shù)目a; = 2 * GB3 用公式 m=300*a 計算總售價; = 3 * GB3 輸出計算結果。Pascal程序: Program Ex12; &
4、#160; 程序首部 Var a,m : integer; &
5、#160; 說明部分 Begin
6、160; 語句部分 Write(a=); ReadLn(a);
7、; 輸入自行車數(shù)目 M := 300*a;
8、60; 計算總售價 Writeln(M=,m);
9、 輸出總售價 ReadLn;
10、0; 等待輸入回車鍵 End. 此題程序結構完整,從中可看出一個Pascal 程序由三部分組成:(1)程序首部由保留字Program開頭,后面跟一個程序名(如:Exl1);其格式為: Program 程序名;程序名由用戶自己取,它的第一個字符必須是英文字母,其后的字符只能是字母或數(shù)字和下劃線組成,程序名中不能出現(xiàn)運算符、標點符和空格。(2)說明部分程序中所用的常量、變量,或類型
11、、及過程與自定義函數(shù),需在使用之前預先說明,定義數(shù)據(jù)的屬性(類型)。例1.2 程序中 Var S,R,C: Real; 是變量說明,此處說明S,R,C三個變量均為實數(shù)類型變量。只有被說明為某一類型的變量,在程序中才能將與該變量同類型的數(shù)值賦給該變量。變量說明的格式為: Var 變量表:類型;(3)語句部分指由保留字 Begin (開始)至 End.
12、 (結尾)之間的語句系列,是解決問題的具體處理步驟,也是程序的執(zhí)行部分。Pascal程序不管是哪部分,每句末尾都必須有分號(;),但允許最接近 End 的那個語句末尾的分號省略;程序結束的End末尾必須有圓點(. ),是整個程序的結束標志。程序中花括號“ ”之間的部分為注釋部分。Pascal程序結構可歸納用如下來表示: Program 程序名;
13、60; 程序首部 標號說明; (Label) 常量說明; (Const) 說明部分 類型說明; (Type) 變量說明; (Var)
14、0; 過程或函數(shù)說明; Begin &
15、#160; 程序體 (主程序) 語句系列; 語句部分 End.
16、 把處理問題的步驟編成能從上到下順序執(zhí)行的程序,是簡單程序的基本特征。再來分析下面兩道例題的Pascal程序結構和繼續(xù)學習基本語句。 例1.3編程計
17、算半徑為R的圓的面積和周長。解:這是一個簡單問題,按數(shù)學方法可分以下幾步進行處理: 從鍵盤輸入半徑的值R; 要求告訴圓的半徑R 用公式 S=R2 計算圓面積; 用公式 C=2R 計算圓周長;
18、; 輸出計算結果。Pascal程序: Program Ex13; 程序首部 Var R,S,C: Real; &
19、#160; 說明部分 Begin 語句部分
20、160; Write ('R=?'); Readln(R); 輸入半徑 S:=Pi*R*R;
21、圓面積公式S=R2 C:=2*Pi*R; 圓周長公式C=2R Writeln('S=',S); 輸出結果 Writeln('C=
22、9;,C); Readln 等待輸入回車鍵
23、0; End.程序中Pi是Pascal提供的標準函數(shù),它返回圓周率的近似值:3.1415926。(:=)是賦值符號,賦值語句的格式為: 變量:=表達式;賦值語句的作用是將:=右邊表達式的值記錄到左邊的變量中。Writeln是輸出語句,輸出語句有三種格式:
24、; Write (輸出項1,輸出項2) ; 執(zhí)行輸出后光標不換行 Writeln (輸出項1,輸出項2) ; 執(zhí)行輸出后光標換到下一行 Writeln
25、0; 僅輸出空白且光標換到下一行Writeln語句后面的圓括號以內部分均為輸出項,可以是多項,各項間用逗號分隔; 對單引號里的內容按照引號內的原樣(字符)輸出顯示。如果輸出項是表達式,則只輸出表達式的值,而不是表達式本身。 例1.4 輸出兩個自然數(shù)相除的商和余數(shù)。解:設被除數(shù)、除數(shù)、商和余數(shù),分別為A,B,C,D,均為變量,且都是整數(shù)類型。題中未給出具體的自然數(shù)A、B,可采用鍵盤輸入方式。 給出提示,
26、從鍵盤輸入a, b; 顯示兩數(shù)相除的數(shù)學形式; 求出a除以b的商c; 求出a除以b的余數(shù)d; 緊接等式后面輸出顯示商和余數(shù)。Pascal程序: Program Ex14; Var a,b,c,d : integer; Begin Write('INPU
27、T A,B:'); 給出提示信息 Readln(a,b); 輸入a,b Writeln;
28、160; 輸出一空行 Write(a,'/',b,'='); 輸出等式之后不換行 c:=a div b;
29、 整除運算,取商的整數(shù)部分 d:=a mod b; 相除求余運算,取商的余數(shù)部分 Writeln(C,'',d);
30、60; 輸出后自動換行 Readln 等待輸入回車鍵 End.執(zhí)行本程序中第一個Write語句,
31、輸出其引號以內的一串提示信息,是給緊接著的輸入語句提供明確的提示(要求),有“一目了然,人機對話”之效果。Readln是一個特殊的輸入語句,要求輸入一個回車(換行)才能往下執(zhí)行。Readln是輸入語句,它的一般格式為: Read (變量1,變量2);
32、160; Readln (變量1,變量2); Readln前兩種格式均要從鍵盤給變量輸入數(shù)據(jù),輸入時,所鍵入的數(shù)據(jù)之間以空格為分隔,以回車為輸入結束。若多輸入了數(shù)據(jù)(即數(shù)據(jù)個數(shù)超過變量個數(shù)),Read語句讀完數(shù)據(jù)之后,能讓后續(xù)的讀語句接著讀取多下來的數(shù)據(jù);而Readln 語句對本行多輸入的數(shù)據(jù)不能讓后續(xù)語句接著讀取多
33、下來的數(shù)據(jù)。為了防止多輸入的數(shù)據(jù)影響下一個輸入語句讀取數(shù)據(jù),建議盡量使用Readln語句輸入數(shù)據(jù)。第三種格式不需輸入數(shù)據(jù),只需按入一個回車鍵。 例1.5自然數(shù)的立方可以表示為兩個整數(shù)的平方之差,比如43=10262,請輸出自然數(shù)1996的這種表示形式。(這里的43用自乘三次的形式4*4*4表示;102也用自乘二次的形式10*10表示)解:此題沒有現(xiàn)成的計算公式能直接利用,但可以自行推出處理方法或構建適當?shù)倪\算公式,按著構想的處理方案編排出各步驟。設這個自然數(shù)為N,兩個平方數(shù)分別為X,Y, 將問題表示為求 N3=X2Y2 先找出X的值,仔細觀察題中的示例,
34、用數(shù)學方法歸納可得出X=N*(N+1)/2;(構成本題可用的計算公式) 再仔細觀察,發(fā)現(xiàn)Y值比X小一個N值,即 Y=XN; 輸出等式 N3=X2Y2 或N*N*N=X*XY*YPascal程序: Program Ex15; Const N=1996; 常量說明 Var X,Y: Longint; 變量說明,此
35、題計算中的數(shù)值較大,用長整型 Begin X:=N*(N+1) div 2; div 是整除運算 Y:=X-N; Writeln(N,'*',N,'*', N,'=', X,'*'
36、;, X,'',Y,'*',Y); 輸出結果 Readln End. 本程序中N是常量,X,Y是變量,為長整數(shù)類型(Longint); 程序中的div 是整除運算,其結果只取商的整數(shù)部分; 例1.6 求一元二次方程x2+3x+2=0的兩個實數(shù)根。解:方程的系數(shù)是常量,分別用a,b,c表示,可運用數(shù)學上現(xiàn)成的求根公式求方程的根
37、,采取如下方法: 先求出d=b2-4ac;(求根公式中需用開方運算的那部分) 再用求根公式算出x1,x2的值。(x1,x2 = ? ) 輸出x1,x2. Pascal程序: program Ex16; Const a=1;
38、 常量說明 b=3; c=2;
39、60; a,b,c表示方程系數(shù) Var d : integer; d為整型變量 X1,X2: Real;
40、0; X1,X2為實型變量 Begin d:=b*b-4*a*c; x1:=(-b+sqrt(d)/(2*a); 求方程的根
41、 x2:=(-b-sqrt(d)/(2*a); Writeln('X1=',X1,'':6,'X2=',X2);輸出結果 Readln
42、; 等待輸入一個回車鍵 End. 本程序中的a,b,c均為常量;變量d是整數(shù)類型,而變量x1,x2則是實數(shù)類型,因為運算式中的Sqrt(d)開平方運算和(/)除法運算使結果為實數(shù)。Sqrt( ) 是開平方函數(shù),是Pascal系統(tǒng)的一個標準函數(shù)。 習題1.1 模仿例題編程1. 加法計算器:編程由鍵盤輸入兩個整數(shù)a和b,計算出它們的和并輸出到屏幕上。
43、2. 某梯形的上底、下底和高分別為8,12,9,求該梯形的面積。3. 求邊長為5.6 的正立方體表面積。4. 已知圖園柱體的高為12,底面園的半徑為7,求園柱體表面積。5. 計算某次考試語文、數(shù)學、英語和計算機等四科的總成績與平均成績。(請用輸入語句從鍵盤輸入各科成績分)第二節(jié) 順序結構程序與基本數(shù)據(jù)類型前面的簡單程序已體現(xiàn)出處理問題步驟、思路的順序關系,這就是順序結構程序。例1.7交換兩個變量的值:由鍵盤輸入兩個正整數(shù)A和B,編程交換這兩個變量的值。解:交換兩個變量的值,可以想象成交換兩盒錄音帶(稱為A和B)
44、的內容,可以按以下步驟處理:步驟:拿一盒空白錄音帶C為過渡,先將A翻錄至C;步驟:再將B翻錄至A;步驟:最后將C翻錄至B。這樣操作,可達到題目要求。Pascal程序:Program Exam17;Var a,b,c : integer;Begin Write(A,B=); Readln(a,b); C:= A; 等價于步驟1 A := B;
45、60; 等價于步驟2 B := C; 等價于步驟3 Writeln(A,B);End.例1.8 分錢游戲。甲、乙、丙三人共有24元錢,先由甲分錢給乙、丙兩人,所分給的數(shù)與各人已有數(shù)相同;接著由乙分給
46、甲、丙,分法同前;再由丙分錢給甲、乙,分法亦同前。經(jīng)上述三次分錢之后,每個人的錢數(shù)恰好一樣多。 求原先各人的錢數(shù)分別是多少?解:設甲、乙、丙三人的錢數(shù)分別為A,B,C。用倒推(逆序)算法, 從最后結果入手,按反相順序,分步驟推算出每次各人當時的錢數(shù):(在每個步驟中,各人錢數(shù)分別存在A、B、C中) 步驟: A=8 B=8 C=8 這是最后結果的錢數(shù),三人都一樣多 步驟: A=A/2 (=4) B=B/
47、2 (=4) C=A+B+C(=16) A,B未得到丙分給的錢時,只有結果數(shù)的一半;C應包含給A,B及本身數(shù)三者之和 步驟: A=A/2 (=2) C=C/2 (=8) B=A+B+C(=14) A,C未得到乙分給的錢時,只有巳有數(shù)的一半;B應包含給A,C及本身數(shù)三者之和 步驟:
48、 B=B/2 (=7) C=C/2 (=4) A=A+B+C(=13) C未得到甲分給的錢時,只有巳有數(shù)的一半;A應包含給B,C及本身數(shù)三者之和 步驟: 輸出A(=13)B(=7)C(=4)此時的A,B,C 就是三人原先的錢數(shù) Pascal程序:Program Exam18;Var a,b,c: integer;Begin a:=8; b:=8;
49、c:=8; 對應于步驟a:=a div 2; b:=b div 2; c:=a+b+c;
50、; 對應于步驟 a:=a div 2; c:=c div 2; b:=a+b+c; 對應于步驟 b:=b div 2; c:=c div 2; a:=a+b+c; &
51、#160; 對應于步驟 Writeln('a=',a,' ': 4,'b=',b,' ': 4,'c=',c) ; 輸出 ReadlnEnd.細心觀察,會發(fā)現(xiàn)本程序語句的順序很關鍵。此例用反推順序(逆序),按步驟正確推算出各變量的值。當然,有的問題可按正序步驟編程,這類程序都稱為順序程序。本程序Writeln語句的輸出
52、項含有( ' ' : 4 ),這里的冒號用來指定該項顯示所占寬度,此處是輸出4個空格即(空格項占4格)。 例1.9 有雞兔同籠,頭30,腳 90,究竟籠中的雞和兔各有多少只?解:設雞為J只,兔為T只,頭為H,腳為F,則: J+T=30
53、0;2*J+4*T=90 解此題暫不必采用數(shù)學上直接解方程的辦法,可采用“假設條件與邏輯推理”的辦法: 假設籠中30 個頭全都是兔,那么都按每頭只腳計算,總腳數(shù)為(4*H),與實際腳數(shù) ( F )之差為(4*HF),如果這個差=0,則籠中全是兔(即雞為0只);如果這個差值 >0,說明多計算了腳數(shù),凡是雞都多給算了兩只腳,用它除以2就能得到雞的只數(shù),處理步驟為: J=(4*HF)/2 先
54、用腳數(shù)差值除以2算出雞的只數(shù) T=HJ 再用總頭數(shù)減雞數(shù)算出免的只數(shù)按此方法,這兩步運算必須注意先后順序才會符合運算邏輯。Pascal程序:Program Exam16;Const H=30;
55、 常量說明 F=90;Var J,T: byte; 為字節(jié)類型的整數(shù) Begin J:=(4*H-F) div 2; 整除運算 T:=H-J Writeln ('J=',J,' ': 6,'T= ',T ) ; Readl
56、nEnd.本程序中H,F(xiàn)為常量,變量J,T為byte類型,屬于整數(shù)類型。Pascal定義了五個標準整數(shù)類型,如下表所示:類型取值范圍占字節(jié)數(shù)格式Shortint(短整型)-128.1271帶符號8位Integer(整型)-32768.327672帶符號16位Longint(長整型)-2147483648.21474836474帶符號32位Byte(字節(jié)型)0.2551無符號8位Word (字型)0.655352無符號16位 在前面程序中常用的數(shù)據(jù)類型除整數(shù)類型,還有實數(shù)類型。Pascal 還定義了五個標準實數(shù)類型,列表所示如下:類型取值范圍占字節(jié)數(shù)有效數(shù)字Real
57、2.9×10-391.7×1038678位Single1.5×10-453.4×103841112位Double5.0×10-3241.7×1030881516位Extended1.9×10-49511.1×104932101920位Comp-263+1238-181920位 在Turbo Pascal 中實數(shù)的表示用科學記數(shù)法,可認為由三部分組成:
58、160; # . # E +# 或 # . # E -# #表示有效數(shù)字; E表示以10為底的冪; +#或-#是指數(shù)部分,+號可省略。例如: 1.7E+38 可寫成1.7E38 (等同于1. 7×1038 )。在實數(shù)類型定義下,即使是整數(shù),在程序執(zhí)行時系統(tǒng)也將自動轉換成科學記數(shù)形式,試請運行下面程序并注意觀察運行結果:Program Exam17;Var x: real;
59、; x為實數(shù)類型 Begin X:=180; 把整數(shù)180賦給實數(shù)類型變量X Writeln ('x=',x) ; 輸出的x自動表示成實數(shù)形式 ReadlnE
60、nd.習題1. 21.已知ABC中的三邊長分別為25.76,74.03,59.31,求ABC的面積。 ( 計算公式: S=
61、 。 其中P = )2.某車棚存有自行車和三輪車共65輛,它們的輪子數(shù)合計為150個。求該棚內存有的自行車和三輪車各是多少輛?3.甲、乙、丙三人分別有磁帶36,48,64盒。先由甲把自己的磁帶平均分為三份,分給乙、丙各一份,自己留下一份;接著是乙,最后是丙,都按甲的方法處理。編程輸出甲、乙、丙在上述過程中各人的磁帶數(shù)分別是多少
62、? (輸出所有的中間結果)4.五位好朋友相聚。第一位朋友帶來了很多糖塊贈送給各位朋友,使每人的糖塊在各自原有的基礎上翻了一倍;接著第二位好友也同樣向每人贈送糖塊,他同樣使每人的糖塊在各人已有的數(shù)量上翻了一倍;第三、第四、第五位好友都照此辦理。經(jīng)過這樣的贈送之后,每人的糖塊恰好都為32塊。問各位好友原先的糖塊數(shù)分別是多少?第二章分支程序 在程序設計中,許多問題是在一定條件下才選擇某種處理方式的,這就需要用條件判斷語句或情況選擇語句進行處理。程序執(zhí)行中將出現(xiàn)選擇(分支),根據(jù)條件只選擇執(zhí)行部分語句,不一定都是按原順序從頭到尾地執(zhí)行所有語句,這樣的程序稱為分支程序。第一節(jié)
63、60;條件語句與復合語句例2.1 某服裝公司為了推銷產(chǎn)品,采取這樣的批發(fā)銷售方案:凡訂購超過100 套的,每套定價為50元,否則每套價格為80元。編程由鍵盤輸入訂購套數(shù),輸出應付款的金額數(shù)。解:設X為訂購套數(shù),Y為付款金額,則: 輸入X; 判斷 X 值; 根據(jù)判斷結果選擇符合條件的那種方法計算Y值; 輸出計算結果。Pascal程序:Program Exam21;Var x,
64、y: integer;Begin Write('X=') ;Readln(x) ; 輸入X if x >100 then y:=50*X else y:80*X; 條件判斷與選擇 Wri
65、teln('y=',y) ; ReadlnEnd.程序中的 if 語句常稱為條件語句,它的一般格式為: (1) if 條件 then 語句; (2) if 條件 then 語句1 else 語句2;IF 語句的功能是按條件在兩種可能中選擇其中一種。習慣上把if 后面的表達式稱為條件,then 后面的語句稱為真項,else 后面的語句稱
66、為假項。若條件成立(為真)就執(zhí)行真項,然后執(zhí)行if語句的后繼語句;若條件不成立(為假)就跳過真項而執(zhí)行假項,然后執(zhí)行后繼語句。而第一種格式只有真項,沒有假項,當條件不成立(為假)就什么也不需做,直接往下去執(zhí)行后繼語句。 例2.2 讀入三個不同的數(shù),編程按由小到大的順序排列打印出來。解:設讀入的三個數(shù)為a,b,c,為了把較小的數(shù)排在前面,可作如下處理: 如果ab就交換a、b的值,將較大的值換至后面; 如果ac就交換a、c的值,將較大的值換至后面;
67、160;如果bc就交換b、c的值,將較大的值換至后面; 輸出處理后的a,b,c。 Pascal程序: Progranm Exam22; Var a,b,c,t: Real; Begin Write('Input a, b,c=');
68、0; Readln(a,b,c); if ab thenbegin 復合語句 t:=a; a:=b;
69、 b:=t 交換a,b end; if ac thenbegin 復合語句&
70、#160; t:=a; a:=c; c:=t 交換a,c end; if bc thenbegin &
71、#160; 復合語句 t:=b; b:=c; c:=t 交換b,c
72、 end; Writeln('a,b,c:',a:6, b:6, c:6); Readln End.if 語句規(guī)定它的真項或假項位置上只能是一個基本語句,如果需要寫一組語句,就應當使用復合語句。本程序中有三處用到復合語句。每個復合語句的范圍是從Begin開始到與它相對應的End為止。復合語句的地位和一個基本語句相同;其一般格
73、式為: Begin 語句系列 End; 習題2. 11.假設郵局規(guī)定寄郵件時若每件重量在1公斤以內(含1公斤),按每公斤1.5元計算郵費,如果超過1公斤時,其超出部分每公斤加收0.8元。請編程序計算郵件收費。2.輸入三個正整數(shù),若能用這三個數(shù)作為邊長組成三角形,就計算并輸出該三角
74、形的面積,否則輸出Can't。(組成三角形的條件為:任意兩邊之和大于第三邊)3.輸入一個三位數(shù)的整數(shù),將數(shù)字位置重新排列,組成一個盡可大的三位數(shù)。例如:輸入213,重新排列可得到盡可能大的三位數(shù)是321。第二節(jié) 情況語句與算術標準函數(shù) 如果有多種(兩種或兩種以上)選擇,常用情況語句編程。將前面例2.1改成用如下方法來處理。根據(jù)題意,付款計算可分為兩種情況: Y=50*X (X100)
75、0; Y=80*X (X=100)顯然,情況與的選擇取決于X值。假設用N表示“情況值”,暫且先讓N2;如果X100則N=1;(此題中N的值只是1或2,且取決于X值)Pascal 程序:Program Exam21_1;Var X,Y,N: integer;Begin Write('X=') ;readln(x) ; n:=2; 先讓n=2 if X1
76、00 then n:=1; 如果X100則 n=1 Case n of 關于情況處理
77、 1: Y:=50*X; 2: Y:=80*X; end; Writeln('Y=',Y) ; ReadlnEnd.程序中的 Caseend 語句為情況語句,是多路分支控制,一般格式為: Case 表達式 of 情況常量表1: 語句1; 情況常量表2: 語句2;&
78、#160; : : 情況常量表n: 語句n end; 執(zhí)行情況語句時,先計算Case后面表達式的值,然后根據(jù)該值在情況常量表中的“對應安排”,選擇其對應的語句執(zhí)行,執(zhí)行完所選擇語句后就結束Case語句;如果常量表中沒有一個與表達式值對應的語句,則什么也不做就結束本Case語句。 Case 語句的另一種應用格式
79、為: Case 表達式 of 情況常量表1: 語句1; 情況常量表2: 語句2; : :
80、60; 情況常量表n: 語句n; else 語句 n+1 end;這種格式的前面部分是相同的,所不同的是:如果常量表中沒有一個與表達式值對應的語句,則執(zhí)行與else對應的語句,然后結束Case語句。例2.2 對某產(chǎn)品征收稅金,在產(chǎn)值1萬元以上征收稅5%;在1萬元以下但在5000元以上的征收稅3%;在5000元以下但在1000元以上征收稅2%;1000元以下的免收稅。編
81、程計算該產(chǎn)品的收稅金額。解:設x為產(chǎn)值,tax為稅金,用P表示情況常量各值,以題意中每1000元為情況分界: P=0: tax=0 (x<1000 ) P=1,2,3,4:&
82、#160; tax=x*0.02 (1000<=x<5000 ) P=5,6,7,8,9: tax=x*0.03 (5000<X<=10000 ) P=10:
83、; tax=x*0.05 (x> 10000 ) 這里的P是“情況”值,用產(chǎn)值x除以1000的整數(shù)值作為P,如果P>10也歸入P=10的情況。Pascal語言用P=trunc(x/1000)取整計算,Pascal程序:Program Exam22;Var x,p : integer; Tax : real;Begin Wri
84、te('Number=') ; readln(x) ; P:=trunc(x/1000) ; if P9 then P:=10; Case P of 0 : tax:=0; &
85、#160; 1,2,3,4 : tax:=x*0.02; 5,6,7,8,9 : tax:=x*0.03; 10
86、0; : tax:=x*0.05 end; Writeln('tt=',tt:5:2) ; ReadlnEnd.情況表達式的計算必須考慮到“全部”情況,不要有遺漏。如果情況常量表的“值”在某范圍內是連續(xù)的,可將常量表寫成:
87、160; n1. n2:語句;因此,上面程序中的情況常量表可以寫成如下程序中表示形式:Program Exam22_1;Var x,p: integer; tax: real;Begin Write('Number=') ; readln(x) ; P:=trunc(x/1000) ; if P9 then P:=10; Case P of 0
88、0; : tax:=0; 1.4 : tax:=x*0.02; 從1至4作為同一情況處理 5.9 : tax:=x*0.03; 從5至9作為同一情況處理 10 : tax:=x*0.05 end; Writeln('tt=',tt:5:2) ; ReadlnEn
89、d.程序中的trunc(x)為取整函數(shù),是Pascal的算術標準函數(shù)之一。Pascal常用的算術標準函數(shù)有19個: (1) abs(x) 求x的絕對值(|x|); (2) exp(x) 求ex的值; (e為無理數(shù)2.71828) (3) frac(x)求x的小數(shù)部分; (4) int(x) 求x的整數(shù)部分(不舍入,函數(shù)值為實型); (5) ln(x) 求以
90、e為底的x的對數(shù)(log ex ); (6) odd(x) 判斷x的奇偶數(shù)(當x為奇數(shù)時odd(x)值為true,否則為false); (7) ord(x) 求x的序號,結果為整型(x為有序類型量); (8) pi 值(3.1415926535897932); (9) pred (x) 求x(有序類型)的前趨值; (10) suc
91、c(x) 求x(有序類型)的后繼值; (11) random 隨機函數(shù),產(chǎn)生01的隨機值; (12) random(n)產(chǎn)生0n的隨機數(shù)(n為word類型,先執(zhí)行randomize, 才能得到隨機整數(shù)); (13) round(x) 求x的四舍五入整數(shù); (14) trunc(x) 求x的整數(shù)部分(截掉小數(shù)部分,結果為整型); (15) sqr(x) 求x的
92、平方值(x2 ); (16) sqrt(x) 求x的開平方根值( );(17) sin(x) 求x的正弦函數(shù)(x為弧度);(18) cox(x) 求x的余弦函數(shù)(x為弧度);(19) arctan(x) 正切的反三角函數(shù)(x為數(shù)值); 習題2.21.運輸公司計算運費時,距離(S)越長,每公里運費越低,標準如下: 如果S250公里;運費為標準運價的
93、100% 如果250公里S500公里,運費為標準運價的98%; 如果500公里S1000公里,運費為標準運價的95%; 如果1
94、000公里S2000公里,運費為標準運價的92%; 如果2000公里S3000公里,運費為標準運價的90%; 如果S3000公里,運費為標準運價的85%;。請編計算運費的程序。2. 輸入考試成績,如果獲85分以上為 A等,獲60分84分為B等,60分以下為C等,編程輸出考試等級。3. 某車間按工人加工零件的數(shù)量發(fā)放獎金,獎金分為五個等級:每月加工零件數(shù)N < 100者獎金為
95、10元;100 < = N < 110者獎金為30元;110 < = N <120 者獎金為50元;120 < = N <130 者獎金為70元;N > 130者為80元。請編程,由鍵盤輸入加工零件數(shù)量,顯示應發(fā)獎金數(shù)。第三章循環(huán)程序在編程中經(jīng)常遇到需要多次規(guī)律相同的重復處理,這就是循環(huán)問題。Turbo Pascal采用不同的循環(huán)方式來實現(xiàn),常用的環(huán)循有三種: for、repeat、while. 第一節(jié)for 循環(huán)for循環(huán)是一種自動計數(shù)型循環(huán)。例3.1 試打印出120的自然數(shù)。解:
96、0;用a代表120各數(shù),同時也用a兼作計數(shù),以控制循環(huán)次數(shù); 讓a從1開始; 輸出a; a自動計數(shù)(加1),如果未超越所規(guī)定的循環(huán)范圍則重復步驟,否則結束循環(huán)。Pascal程序:Program Exam12;Var a: byte;Begin for a:=1 to 20 do Writeln (a); ReadlnEnd. 程序中 for
97、a:=1 to 20 do Writeln (a); 是for循環(huán)語句。for 循環(huán)語句有兩種格式:(1) for循環(huán)變量:=初值 To 終值 do 語句; (2) for循環(huán)變量:=初值downto 終值 do 語句;第(1)種格式的初值小于等于終值,循環(huán)變量值按自動加1遞增變化;第(2)種格式的初值大于或等于終值,循環(huán)變量值按自動減1遞減變化。for 循環(huán)是 (以遞增1或以遞減1) 計數(shù)
98、型循環(huán)。比如: 若將例3.1程序改為倒計數(shù)(遞減)循環(huán),則輸出201的自然數(shù)數(shù):Program Exam31;Var a: byte;Begin for a:=20 downto 1 doWriteln(a) ; ReadlnEnd.例3.2打印出30至60的偶數(shù)。解:方法一: = 1 * GB3 設a表示30至60的所有的數(shù),可用for循環(huán)列出; = 2 * GB3 用式子a mod 2=0篩選出其中的偶數(shù)并輸出。Pascal程序:Program ex32;Var a
99、60; : integer;Begin For a := 30 to 60 do If (a mod 2=0) then writeln(a); Readln;End.在這個程序中,for循環(huán)后的循環(huán)語句是一個條件分支語句。 方法二:我們知道,在式子a=2*n中,若n取自然數(shù)1、2、3、,時,則a依次得到偶數(shù)2、4、6、。因此要想得到30至60的偶數(shù),就可以讓上面式子中的n取15至30的自然數(shù)就可以了。所以本題還可以按以下步驟處理: = 1 * GB3
100、160;設n表示15至30的所有自然數(shù),可用for循環(huán)列出; = 2 * GB3 用式子a := 2*n求出其中的偶數(shù); = 3 * GB3 將結果輸出至屏幕。Pascal程序:Program ex32;Begin For n := 15 to 30 do Begin a := 2*n; Writeln(a);End;
101、0; Readln;End. 例3.3自然數(shù)求和:編一個程序,求從1至100的自然數(shù)的和。解: 令S0; 令a表示1至100的自然數(shù),用循環(huán)列出; 將這些自然數(shù)用公式S:=S+a 逐一累加到S中去; = 4 * GB3 循環(huán)結束后,S即為1至100的自然數(shù)的和,輸出即可。Pascal程序:Program ex33;var s,a : integer;Begin S := 0; For a := 1 to 100 do
102、 S := S+a; Writeln(S=,S); Readln;End. 例3.4一個兩位數(shù)x,將它的個位數(shù)字與十位數(shù)字對調后得到一個新數(shù)y,此時y恰好比x大36,請編程求出所有這樣的兩位數(shù)。解: 用for循環(huán)列舉出所有的兩位數(shù),x為循環(huán)變量; 用公式a:= x div 10分離出x的十位數(shù)字; 用公式b:= x mod 10分離出x的個位數(shù)字; 用公式y(tǒng):= b*10+a合成新數(shù)y; = 5 * GB3 用式子y-x=36篩選出符合條件的數(shù)x并輸出。Pascal
103、程序:Program ex34;Begin For x := 10 to 99 do Begin a := x div 10; b := x mod 10; y := b*10+a; if y-x=36 then writeln(x);End;Readln;End. 例3.5 把整數(shù)3025從中剪開分為30和25兩個數(shù),此時再將這兩數(shù)之和平方,(30+25)2=3025計算結果又等于原數(shù)。求所有符合這樣條件的四位數(shù)。解:設符合條件的四位數(shù)為N,它應當是一個完全平方數(shù),用(a*a)表示。
104、60; 為了確保N=(a*a)在四位數(shù)(10009999)范圍內,可確定a在3299循環(huán); 計算N=a*a;將四位數(shù)N拆分為兩個數(shù)n1和n2; 若滿足條件(n1+n2)*(n1+n2)N 就輸出 N 。Pascal程序:Program Exam35;Var N,a, x,n1,n2: Integer;Begin for a:=32 to 99 do begin N:=a*a;
105、 n1:= N div 100; 拆取四位數(shù)的前兩位數(shù) n2:= N-n1*100; 拆取四位數(shù)的后兩位數(shù) X:=n1+n2; if x*x=N then writeln (N); end; ReadlnEnd. 例3.6用“*”號打印出如下的長方形圖案。*
106、 * * *解: 上面給出的圖例共有4行,我們可以用一個循環(huán)控制行的變化; 在每行中又有9列,我們可以在前面控制行的循環(huán)中再套一個循環(huán)來控制列的變化。Pascal程序:Program ex36;Begin For a := 1 to 4 do 外循環(huán)控制行的變化 Be
107、gin For b := 1 to 9 do 內循環(huán)控制列的變化 write(*); Writeln;
108、60; 輸出一行的“*”后換行End;Readln;End.程序中的循環(huán)對于a的每個值都包含著一個b=(19)次的內循環(huán)。外循環(huán)for a 將內循環(huán)for b包含在里面,稱為for循環(huán)的嵌套。嵌套形式如:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術保密合同
- 承包人合同范本(2篇)
- 2025年度高品質內墻抹灰裝飾工程承包合同4篇
- 2025版內蒙古生態(tài)環(huán)保產(chǎn)業(yè)投資合同范本4篇
- 二零二五年度農(nóng)產(chǎn)品質量檢測與追溯服務合同4篇
- 2025版牛羊肉冷鏈物流配送服務合同4篇
- 二零二五年度回遷房買賣合同標準樣本(產(chǎn)權互換版)2篇
- 二零二五年度木工班組承包節(jié)能減排合同范本3篇
- 二零二五年度農(nóng)業(yè)廢棄物回收與資源化利用合作合同4篇
- 2025年度個人設備租賃融資借款合同樣本4篇
- 2025年度公務車輛私人使用管理與責任協(xié)議書3篇
- 經(jīng)濟學基礎試題及答案 (二)
- 售后工程師述職報告
- 綠化養(yǎng)護難點要點分析及技術措施
- 2024年河北省高考歷史試卷(含答案解析)
- 車位款抵扣工程款合同
- 小學六年級數(shù)學奧數(shù)題100題附答案(完整版)
- 高中綜評項目活動設計范文
- 英漢互譯單詞練習打印紙
- 2023湖北武漢華中科技大學招聘實驗技術人員24人筆試參考題庫(共500題)答案詳解版
- 一氯二氟甲烷安全技術說明書MSDS
評論
0/150
提交評論