




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、注:本教程授課時間為十八課時,學生上機練習時間為十八課間,共計三十六課時。可同時對六十名學生授課。第一章簡單程序2第一節 Pascal 程序結構和基本語句2第二節 順序結構程序與基本數據類型6第二章分支程序10第一節 條件語句與復合語句10第二節 情況語句與算術標準函數12第三章循環程序16第一節for 循環16第二節repeat 循環22第三節While 循環27第四章函數與過程32第一節函數32第二節自定義過程35第五章Pascal的自定義數據類型40第一節數組與子界類型40第二節二維數組與枚舉類型48第三節集合類型56第四節記錄類型和文件類型60第五節 指針類型與動態數據結構67第六章
2、程序設計與基本算法73第一節遞推與遞歸算法73第二節回溯算法80第一章簡單程序無論做任何事情,都要有一定的方式方法與處理步驟。計算機程序設計比日常生活中的事務處理更具有嚴謹性、規范性、可行性。為了使計算機有效地解決某些問題,須將處理步驟編排好,用計算機語言組成“序列”,讓計算機自動識別并執行這個用計算機語言組成的“序列”,完成預定的任務。將處理問題的步驟編排好,用計算機語言組成序列,也就是常說的編寫程序。在Pascal語言中,執行每條語句都是由計算機完成相應的操作。編寫Pascal程序,是利用Pascal語句的功能來實現和達到預定的處理要求。“千里之行,始于足下”,我們從簡單程序學起,逐步了解
3、和掌握怎樣編寫程序。第一節 Pascal 程序結構和基本語句在未系統學習Pascal語言之前,暫且繞過那些繁瑣的語法規則細節,通過下面的簡單例題,可以速成掌握Pascal程序的基本組成和基本語句的用法,讓初學者直接模仿學習編簡單程序。例1.1編程在屏幕上顯示“Hello World!”。 Pascal程序:Program ex11;Begin Writeln(Hello World!); ReadLn;End.這個簡單樣例程序,希望大家的程序設計學習能有一個良好的開端。程序中的Writeln是一個輸出語句,它能命令計算機在屏幕上輸出相應的內容,而緊跟Writeln語句后是一對圓括號,其中用單引
4、號引起的部分將被原原本本地顯示出來。例1.2已知一輛自行車的售價是300元,請編程計算a輛自行車的總價是多少?解:若總售價用m來表示,則這個問題可分為以下幾步處理:從鍵盤輸入自行車的數目a;用公式 m=300*a 計算總售價;輸出計算結果。Pascal程序: Program Ex12; 程序首部 Var a,m: integer;說明部分 Begin語句部分 Write(a=); ReadLn(a);輸入自行車數目 M := 300*a;計算總售價 Writeln(M=,m);輸出總售價 ReadLn;等待輸入回車鍵 End.此題程序結構完整,從中可看出一個Pascal 程序由三部分組成:(1
5、)程序首部由保留字Program開頭,后面跟一個程序名(如:Exl1);其格式為: Program 程序名;程序名由用戶自己取,它的第一個字符必須是英文字母,其后的字符只能是字母或數字和下劃線組成,程序名中不能出現運算符、標點符和空格。(2)說明部分程序中所用的常量、變量,或類型、及過程與自定義函數,需在使用之前預先說明,定義數據的屬性(類型)。例1.2 程序中 Var S,R,C: Real; 是變量說明,此處說明S,R,C三個變量均為實數類型變量。只有被說明為某一類型的變量,在程序中才能將與該變量同類型的數值賦給該變量。變量說明的格式為: Var 變量表:類型;(3)語句部分指由保留字 B
6、egin (開始)至 End. (結尾)之間的語句系列,是解決問題的具體處理步驟,也是程序的執行部分。Pascal程序不管是哪部分,每句末尾都必須有分號(;),但允許最接近 End 的那個語句末尾的分號省略;程序結束的End末尾必須有圓點(. ),是整個程序的結束標志。程序中花括號“ ”之間的部分為注釋部分。Pascal程序結構可歸納用如下的示意圖來表示: Program 程序名; 程序首部 標號說明; (Label) 常量說明; (Const) 說明部分 類型說明; (Type) 變量說明; (Var) 過程或函數說明; Begin 程序體 (主程序) 語句系列; 語句部分 End. 圖1.
7、1 Pascal程序的結構把處理問題的步驟編成能從上到下順序執行的程序,是簡單程序的基本特征。再來分析下面兩道例題的Pascal程序結構和繼續學習基本語句。例1.3編程計算半徑為R的圓的面積和周長。解:這是一個簡單問題,按數學方法可分以下幾步進行處理: 從鍵盤輸入半徑的值R; 要求告訴圓的半徑R 用公式 S=R2 計算圓面積; 用公式 C=2R 計算圓周長; 輸出計算結果。Pascal程序: Program Ex13;程序首部 Var R,S,C: Real; 說明部分 Begin 語句部分 Write ('R=?'); Readln(R); 輸入半徑 S:=Pi*R*R; 圓
8、面積公式S=R2 C:=2*Pi*R; 圓周長公式C=2R Writeln('S=',S); 輸出結果 Writeln('C=',C); Readln 等待輸入回車鍵 End.程序中Pi是Pascal提供的標準函數,它返回圓周率的近似值:3.1415926。(:=)是賦值符號,賦值語句的格式為: 變量:=表達式;賦值語句的作用是將:=右邊表達式的值記錄到左邊的變量中。Writeln是輸出語句,輸出語句有三種格式: Write (輸出項1,輸出項2) ; 執行輸出后光標不換行 Writeln (輸出項1,輸出項2) ; 執行輸出后光標換到下一行 Writeln 僅
9、輸出空白且光標換到下一行Writeln語句后面的圓括號以內部分均為輸出項,可以是多項,各項間用逗號分隔; 對單引號里的內容按照引號內的原樣(字符)輸出顯示。如果輸出項是表達式,則只輸出表達式的值,而不是表達式本身。例1.4 輸出兩個自然數相除的商和余數。解:設被除數、除數、商和余數,分別為A,B,C,D,均為變量,且都是整數類型。題中未給出具體的自然數A、B,可采用鍵盤輸入方式。 給出提示,從鍵盤輸入a, b; 顯示兩數相除的數學形式; 求出a除以b的商c; 求出a除以b的余數d; 緊接等式后面輸出顯示商和余數。Pascal程序: Program Ex14; Var a,b,c,d : int
10、eger; Begin Write('INPUT A,B:'); 給出提示信息 Readln(a,b); 輸入a,b Writeln; 輸出一空行 Write(a,'/',b,'='); 輸出等式之后不換行 c:=a div b; 整除運算,取商的整數部分 d:=a mod b; 相除求余運算,取商的余數部分 Writeln(C,'',d); 輸出后自動換行 Readln 等待輸入回車鍵 End.執行本程序中第一個Write語句,輸出其引號以內的一串提示信息,是給緊接著的輸入語句提供明確的提示(要求),有“一目了然,人機對話”之效
11、果。Readln是一個特殊的輸入語句,要求輸入一個回車(換行)才能往下執行。 Readln是輸入語句,它的一般格式為: Read (變量1,變量2); Readln (變量1,變量2); Readln前兩種格式均要從鍵盤給變量輸入數據,輸入時,所鍵入的數據之間以空格為分隔,以回車為輸入結束。若多輸入了數據(即數據個數超過變量個數),Read語句讀完數據之后,能讓后續的讀語句接著讀取多下來的數據;而Readln 語句對本行多輸入的數據不能讓后續語句接著讀取多下來的數據。為了防止多輸入的數據影響下一個輸入語句讀取數據,建議盡量使用Readln語句輸入數據。第三種格式不需輸入數據,只需按入一個回車鍵
12、。例1.5自然數的立方可以表示為兩個整數的平方之差,比如43=10262,請輸出自然數1996的這種表示形式。(這里的43用自乘三次的形式4*4*4表示;102也用自乘二次的形式10*10表示)解:此題沒有現成的計算公式能直接利用,但可以自行推出處理方法或構建適當的運算公式,按著構想的處理方案編排出各步驟。設這個自然數為N,兩個平方數分別為X,Y, 將問題表示為求 N3=X2Y2 先找出X的值,仔細觀察題中的示例,用數學方法歸納可得出X=N*(N+1)/2;(構成本題可用的計算公式) 再仔細觀察,發現Y值比X小一個N值,即 Y=XN; 輸出等式 N3=X2Y2 或N*N*N=X*XY*YPas
13、cal程序: Program Ex15; Const N=1996; 常量說明 Var X,Y: Longint; 變量說明,此題計算中的數值較大,用長整型 Begin X:=N*(N+1) div 2; div 是整除運算 Y:=X-N; Writeln(N,'*',N,'*', N,'=', X,'*', X,'',Y,'*',Y); 輸出結果 Readln End. 本程序中N是常量,X,Y是變量,為長整數類型(Longint); 程序中的div 是整除運算,其結果只取商的整數部分; 例1.6
14、 求一元二次方程x2+3x+2=0的兩個實數根。解:方程的系數是常量,分別用a,b,c表示,可運用數學上現成的求根公式求方程的根,采取如下方法: 先求出d=b2-4ac;(求根公式中需用開方運算的那部分) 再用求根公式算出x1,x2的值。(x1,x2 = ? ) 輸出x1,x2. Pascal程序: program Ex16; Const a=1; 常量說明 b=3; c=2; a,b,c表示方程系數 Var d : integer; d為整型變量 X1,X2: Real; X1,X2為實型變量 Begin d:=b*b-4*a*c; x1:=(-b+sqrt(d)/(2*a); 求方程的根
15、x2:=(-b-sqrt(d)/(2*a); Writeln('X1=',X1,'':6,'X2=',X2);輸出結果 Readln 等待輸入一個回車鍵 End. 本程序中的a,b,c均為常量;變量d是整數類型,而變量x1,x2則是實數類型,因為運算式中的Sqrt(d)開平方運算和(/)除法運算使結果為實數。Sqrt( ) 是開平方函數,是Pascal系統的一個標準函數。習題1.1 模仿例題編程1. 加法計算器:編程由鍵盤輸入兩個整數a和b,計算出它們的和并輸出到屏幕上。)2. 某梯形的上底、下底和高分別為8,12,9,求該梯形的面積。 ( 梯形
16、面積公式為 S= 3. 求右圖所示邊長為5.6 的正立方體表面積。4. 已知圖園柱體的高為12,底面園的半徑為7,求園柱體表面積。5. 計算某次考試語文、數學、英語和計算機等四科的總成績與平均成績。(請用輸入語句從鍵盤輸入各科成績分)第二節 順序結構程序與基本數據類型前面的簡單程序已體現出處理問題步驟、思路的順序關系,這就是順序結構程序。例1.7交換兩個變量的值:由鍵盤輸入兩個正整數A和B,編程交換這兩個變量的值。解:交換兩個變量的值,可以想象成交換兩盒錄音帶(稱為A和B)的內容,可以按以下步驟處理:步驟:拿一盒空白錄音帶C為過渡,先將A翻錄至C;步驟:再將B翻錄至A;步驟:最后將C翻錄至B。
17、這樣操作,可達到題目要求。Pascal程序:Program Exam17;Var a,b,c: integer;Begin Write(A,B=); Readln(a,b); C:= A; 等價于步驟1 A := B;等價于步驟2 B := C;等價于步驟3 Writeln(A,B);End.例1.8 分錢游戲。甲、乙、丙三人共有24元錢,先由甲分錢給乙、丙兩人,所分給的數與各人已有數相同;接著由乙分給甲、丙,分法同前;再由丙分錢給甲、乙,分法亦同前。經上述三次分錢之后,每個人的錢數恰好一樣多。 求原先各人的錢數分別是多少?解:設甲、乙、丙三人的錢數分別為A,B,C。用倒推(逆序)算法, 從最
18、后結果入手,按反相順序,分步驟推算出每次各人當時的錢數:(在每個步驟中,各人錢數分別存在A、B、C中) 步驟:A=8 B=8 C=8 這是最后結果的錢數,三人都一樣多 步驟:A=A/2 (=4)B=B/2 (=4)C=A+B+C(=16) A,B未得到丙分給的錢時,只有結果數的一半;C應包含給A,B及本身數三者之和 步驟:A=A/2 (=2)C=C/2 (=8)B=A+B+C(=14) A,C未得到乙分給的錢時,只有巳有數的一半;B應包含給A,C及本身數三者之和 步驟:B=B/2 (=7)C=C/2 (=4)A=A+B+C(=13) C未得到甲分給的錢時,只有巳有數的一半;A應包含給B,C及本
19、身數三者之和 步驟: 輸出A(=13)B(=7)C(=4)此時的A,B,C 就是三人原先的錢數 Pascal程序:Program Exam18;Var a,b,c: integer;Begin a:=8; b:=8; c:=8; 對應于步驟a:=a div 2; b:=b div 2; c:=a+b+c; 對應于步驟 a:=a div 2; c:=c div 2; b:=a+b+c; 對應于步驟 b:=b div 2; c:=c div 2; a:=a+b+c; 對應于步驟 Writeln('a=',a,' ': 4,'b=',b,' &
20、#39;: 4,'c=',c) ; 輸出 ReadlnEnd.細心觀察,會發現本程序語句的順序很關鍵。此例用反推順序(逆序),按步驟正確推算出各變量的值。當然,有的問題可按正序步驟編程,這類程序都稱為順序程序。本程序Writeln語句的輸出項含有( ' ' : 4 ),這里的冒號用來指定該項顯示所占寬度,此處是輸出4個空格即(空格項占4格)。例1.9 有雞兔同籠,頭30,腳 90,究竟籠中的雞和兔各有多少只?解:設雞為J只,兔為T只,頭為H,腳為F,則:J+T=302*J+4*T=90 解此題暫不必采用數學上直接解方程的辦法,可采用“假設條件與邏輯推理”的辦法:
21、 假設籠中30 個頭全都是兔,那么都按每頭只腳計算,總腳數為(4*H),與實際腳數 ( F )之差為(4*HF),如果這個差=0,則籠中全是兔(即雞為0只);如果這個差值 >0,說明多計算了腳數,凡是雞都多給算了兩只腳,用它除以2就能得到雞的只數,處理步驟為: J=(4*HF)/2 先用腳數差值除以2算出雞的只數 T=HJ 再用總頭數減雞數算出免的只數按此方法,這兩步運算必須注意先后順序才會符合運算邏輯。Pascal程序:Program Exam16;Const H=30; 常量說明 F=90;Var J,T: byte; 為字節類型的整數 Begin J:=(4*H-F) div 2;
22、 整除運算 T:=H-J Writeln ('J=',J,' ': 6,'T= ',T ) ; ReadlnEnd.本程序中H,F為常量,變量J,T為byte類型,屬于整數類型。Pascal定義了五個標準整數類型,如下表所示:類型取值范圍占字節數格式Shortint(短整型)-128.1271帶符號8位Integer(整型)-32768.327672帶符號16位Longint(長整型)-2147483648.21474836474帶符號32位Byte(字節型)0.2551無符號8位Word (字型)0.655352無符號16位 在前面程序中常用的
23、數據類型除整數類型,還有實數類型。Pascal 還定義了五個標準實數類型,列表所示如下:類型取值范圍占字節數有效數字Real2.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 中實數的表示用科學記數法,可認為由三部分組成: # . # E +# 或 # . # E -
24、# #表示有效數字; E表示以10為底的冪; +#或-#是指數部分,+號可省略。例如: 1.7E+38 可寫成1.7E38 (等同于1. 7×1038 )。在實數類型定義下,即使是整數,在程序執行時系統也將自動轉換成科學記數形式,試請運行下面程序并注意觀察運行結果:Program Exam17;Var x: real; x為實數類型 Begin X:=180; 把整數180賦給實數類型變量X Writeln ('x=',x) ; 輸出的x自動表示成實數形式 ReadlnEnd.習題1. 21.已知ABC中的三邊長分別為25.76,74.03,59.31,求ABC的面積
25、。 ( 計算公式: S= 。 其中P = )2.某車棚存有自行車和三輪車共65輛,它們的輪子數合計為150個。求該棚內存有的自行車和三輪車各是多少輛?3.甲、乙、丙三人分別有磁帶36,48,64盒。先由甲把自己的磁帶平均分為三份,分給乙、丙各一份,自己留下一份;接著是乙,最后是丙,都按甲的方法處理。編程輸出甲、乙、丙在上述過程中各人的磁帶數分別是多少? (輸出所有的中間結果)4.五位好朋友相聚。第一位朋友帶來了很多糖塊贈送給各位朋友,使每人的糖塊在各自原有的基礎上翻了一倍;接著第二位好友也同樣向每人贈送糖塊,他同樣使每人的糖塊在各人已有的數量上翻了一倍;第三、第四、第五位好友都照此辦理。經過這
26、樣的贈送之后,每人的糖塊恰好都為32塊。問各位好友原先的糖塊數分別是多少?第二章分支程序在程序設計中,許多問題是在一定條件下才選擇某種處理方式的,這就需要用條件判斷語句或情況選擇語句進行處理。程序執行中將出現選擇(分支),根據條件只選擇執行部分語句,不一定都是按原順序從頭到尾地執行所有語句,這樣的程序稱為分支程序。第一節 條件語句與復合語句例2.1 某服裝公司為了推銷產品,采取這樣的批發銷售方案:凡訂購超過100 套的,每套定價為50元,否則每套價格為80元。編程由鍵盤輸入訂購套數,輸出應付款的金額數。解:設X為訂購套數,Y為付款金額,則: 輸入X; 判斷 X 值; 根據判斷結果選擇符合條件的
27、那種方法計算Y值; 輸出計算結果。Pascal程序:Program Exam21;Var x,y: integer;Begin Write('X=') ;Readln(x) ; 輸入X if x >100 then y:=50*X else y:80*X; 條件判斷與選擇 Writeln('y=',y) ; ReadlnEnd.程序中的 if 語句常稱為條件語句,它的一般格式為: (1) if 條件 then 語句; (2) if 條件 then 語句1 else 語句2;IF 語句的功能是按條件在兩種可能中選擇其中一種。習慣上把if 后面的表達式稱為條件
28、,then 后面的語句稱為真項,else 后面的語句稱為假項。若條件成立(為真)就執行真項,然后執行if語句的后繼語句;若條件不成立(為假)就跳過真項而執行假項,然后執行后繼語句。而第一種格式只有真項,沒有假項,當條件不成立(為假)就什么也不需做,直接往下去執行后繼語句。例2.2 讀入三個不同的數,編程按由小到大的順序排列打印出來。解:設讀入的三個數為a,b,c,為了把較小的數排在前面,可作如下處理: 如果ab就交換a、b的值,將較大的值換至后面; 如果ac就交換a、c的值,將較大的值換至后面; 如果bc就交換b、c的值,將較大的值換至后面; 輸出處理后的a,b,c。 Pascal程序: Pr
29、ogranm Exam22; Var a,b,c,t: Real; Begin Write('Input a, b,c='); Readln(a,b,c); if ab then begin 復合語句 t:=a; a:=b; b:=t 交換a,b end; if ac then begin 復合語句 t:=a; a:=c; c:=t 交換a,c end; if bc then begin 復合語句 t:=b; b:=c; c:=t 交換b,c end; Writeln('a,b,c:',a:6, b:6, c:6); Readln End.if 語句規定它的真項
30、或假項位置上只能是一個基本語句,如果需要寫一組語句,就應當使用復合語句。本程序中有三處用到復合語句。每個復合語句的范圍是從Begin開始到與它相對應的End為止。復合語句的地位和一個基本語句相同;其一般格式為: Begin 語句系列 End;習題2. 11.假設郵局規定寄郵件時若每件重量在1公斤以內(含1公斤),按每公斤1.5元計算郵費,如果超過1公斤時,其超出部分每公斤加收0.8元。請編程序計算郵件收費。2.輸入三個正整數,若能用這三個數作為邊長組成三角形,就計算并輸出該三角形的面積,否則輸出Can't。(組成三角形的條件為:任意兩邊之和大于第三邊)3.輸入一個三位數的整數,將數字位
31、置重新排列,組成一個盡可大的三位數。例如:輸入213,重新排列可得到盡可能大的三位數是321。第二節 情況語句與算術標準函數如果有多種(兩種或兩種以上)選擇,常用情況語句編程。將前面例2.1改成用如下方法來處理。根據題意,付款計算可分為兩種情況: Y=50*X (X100) 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)
32、; n:=2; 先讓n=2 if X100 then n:=1; 如果X100則 n=1 Case n of 關于情況處理 1: Y:=50*X; 2: Y:=80*X; end; Writeln('Y=',Y) ; ReadlnEnd.程序中的 Caseend 語句為情況語句,是多路分支控制,一般格式為: Case 表達式 of 情況常量表1: 語句1; 情況常量表2: 語句2; : : 情況常量表n: 語句n end;執行情況語句時,先計算Case后面表達式的值,然后根據該值在情況常量表中的“對應安排”,選擇其對應的語句執行,執行完所選擇語句后就結束Case語句;如果常量表
33、中沒有一個與表達式值對應的語句,則什么也不做就結束本Case語句。Case 語句的另一種應用格式為: Case 表達式 of 情況常量表1: 語句1; 情況常量表2: 語句2; : : 情況常量表n: 語句n; else 語句 n+1 end;這種格式的前面部分是相同的,所不同的是:如果常量表中沒有一個與表達式值對應的語句,則執行與else對應的語句,然后結束Case語句。例2.2 對某產品征收稅金,在產值1萬元以上征收稅5%;在1萬元以下但在5000元以上的征收稅3%;在5000元以下但在1000元以上征收稅2%;1000元以下的免收稅。編程計算該產品的收稅金額。解:設x為產值,tax為稅金
34、,用P表示情況常量各值,以題意中每1000元為情況分界: P=0: tax=0 (x<1000 ) P=1,2,3,4: tax=x*0.02 (1000<=x<5000 ) P=5,6,7,8,9: tax=x*0.03 (5000<X<=10000 ) P=10: tax=x*0.05 (x> 10000 ) 這里的P是“情況”值,用產值x除以1000的整數值作為P,如果P>10也歸入P=10的情況。Pascal語言用P=trunc(x/1000)取整計算,Pascal程序:Program Exam22;Var x,p : integer; Tax
35、 : real;Begin Write('Number=') ; readln(x) ; P:=trunc(x/1000) ; if P9 then P:=10; Case P of 0: tax:=0; 1,2,3,4: tax:=x*0.2; 5,6,7,8,9: tax:=x*0.3; 10: tax:=x*0.5 end; Writeln('tt=',tt:5:2) ; ReadlnEnd.情況表達式的計算必須考慮到“全部”情況,不要有遺漏。如果情況常量表的“值”在某范圍內是連續的,可將常量表寫成: n1. n2:語句;因此,上面程序中的情況常量表可以寫
36、成如下程序中表示形式: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: tax:=0; 1.4: tax:=x*0.2; 從1至4作為同一情況處理 5.9: tax:=x*0.3; 從5至9作為同一情況處理 10: tax:=x*0.5 end; Writeln('tt=',tt:5:2) ; ReadlnEnd.程序中的trunc(x)為取整函數,是
37、Pascal的算術標準函數之一。Pascal常用的算術標準函數有19個: (1) abs(x) 求x的絕對值(|x|); (2) exp(x) 求ex的值; (e為無理數2.71828) (3) frac(x)求x的小數部分; (4) int(x) 求x的整數部分(不舍入,函數值為實型); (5) ln(x) 求以e為底的x的對數(log ex ); (6) odd(x) 判斷x的奇偶數(當x為奇數時odd(x)值為true,否則為false); (7) ord(x) 求x的序號,結果為整型(x為有序類型量); (8) pi 值(3.14932); (9) pred (x) 求x(有序類型)的
38、前趨值; (10) succ(x) 求x(有序類型)的后繼值; (11) random 隨機函數,產生01的隨機值; (12) random(n)產生0n的隨機數(n為word類型,先執行randomize, 才能得到隨機整數); (13) round(x) 求x的四舍五入整數; (14) trunc(x) 求x的整數部分(截掉小數部分,結果為整型); (15) sqr(x) 求x的平方值(x2 ); (16) sqrt(x) 求x的開平方根值( );(17) sin(x) 求x的正弦函數(x為弧度);(18) cox(x) 求x的余弦函數(x為弧度);(19) arctan(x) 正切的反三
39、角函數(x為數值);習題2.21.運輸公司計算運費時,距離(S)越長,每公里運費越低,標準如下: 如果S250公里;運費為標準運價的100% 如果250公里S500公里,運費為標準運價的98%; 如果500公里S1000公里,運費為標準運價的95%; 如果1000公里S2000公里,運費為標準運價的92%; 如果2000公里S3000公里,運費為標準運價的90%; 如果S3000公里,運費為標準運價的85%;。請編計算運費的程序。2. 輸入考試成績,如果獲85分以上為 A等,獲60分84分為B等,60分以下為C等,編程輸出考試等級。3. 某車間按工人加工零件的數量發放獎金,獎金分為五個等級:每
40、月加工零件數N < 100者獎金為10元;100 < = N < 110者獎金為30元;110 < = N <120 者獎金為50元;120 < = N <130 者獎金為70元;N > 130者為80元。請編程,由鍵盤輸入加工零件數量,顯示應發獎金數。第三章循環程序在編程中經常遇到需要多次規律相同的重復處理,這就是循環問題。Turbo Pascal采用不同的循環方式來實現,常用的環循有三種: for、repeat、while. 第一節for 循環for循環是一種自動計數型循環。例3.1 試打印出120的自然數。解: 用a代表120各數,同時也用
41、a兼作計數,以控制循環次數; 讓a從1開始; 輸出a; a自動計數(加1),如果未超越所規定的循環范圍則重復步驟,否則結束循環。Pascal程序:Program Exam12;Var a: byte;Begin for a:=1 to 20 do Writeln (a); ReadlnEnd.程序中 for a:=1 to 20 do Writeln (a); 是for循環語句。for 循環語句有兩種格式:(1) for循環變量:=初值 To 終值 do 語句; (2) for循環變量:=初值downto 終值 do 語句;第(1)種格式的初值小于等于終值,循環變量值按自動加1遞增變化;第(2
42、)種格式的初值大于或等于終值,循環變量值按自動減1遞減變化。for 循環是 (以遞增1或以遞減1) 計數型循環。比如: 若將例3.1程序改為倒計數(遞減)循環,則輸出201的自然數數: Program Exam31;Var a: byte;Begin for a:=20 downto 1 doWriteln(a) ; ReadlnEnd.例3.2打印出30至60的偶數。解:方法一:設a表示30至60的所有的數,可用for循環列出;用式子a mod 2=0篩選出其中的偶數并輸出。Pascal程序:Program ex32;Var a: integer;Begin For a := 30 to 6
43、0 doIf (a mod 2=0) then writeln(a); Readln;End.在這個程序中,for循環后的循環語句是一個條件分支語句。方法二:我們知道,在式子a=2*n中,若n取自然數1、2、3、,時,則a依次得到偶數2、4、6、。因此要想得到30至60的偶數,就可以讓上面式子中的n取15至30的自然數就可以了。所以本題還可以按以下步驟處理:設n表示15至30的所有自然數,可用for循環列出;用式子a := 2*n求出其中的偶數;將結果輸出至屏幕。Pascal程序:Program ex32;Begin For n := 15 to 30 do Begin a := 2*n; W
44、riteln(a);End; Readln;End.例3.3自然數求和:編一個程序,求從1至100的自然數的和。解: 令S0; 令a表示1至100的自然數,用循環列出; 將這些自然數用公式S:=S+a 逐一累加到S中去; 循環結束后,S即為1至100的自然數的和,輸出即可。Pascal程序:Program ex33;var s,a : integer;Begin S := 0; For a := 1 to 100 do S := S+a; Writeln(S=,S); Readln;End.例3.4一個兩位數x,將它的個位數字與十位數字對調后得到一個新數y,此時y恰好比x大36,請編程求出所有
45、這樣的兩位數。解: 用for循環列舉出所有的兩位數,x為循環變量; 用公式a:= x div 10分離出x的十位數字; 用公式b:= x mod 10分離出x的個位數字; 用公式y:= b*10+a合成新數y; 用式子y-x=36篩選出符合條件的數x并輸出。Pascal程序: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 把整數3025從中剪開分為30和25兩個數,此時再將這
46、兩數之和平方,(30+25)2=3025計算結果又等于原數。求所有符合這樣條件的四位數。解:設符合條件的四位數為N,它應當是一個完全平方數,用(a*a)表示。 為了確保N=(a*a)在四位數(10009999)范圍內,可確定a在3299循環; 計算N=a*a;將四位數N拆分為兩個數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; n1:= N div 100; 拆取四位數的前兩位數 n2:= N-
47、n1*100; 拆取四位數的后兩位數 X:=n1+n2; if x*x=N then writeln (N); end; ReadlnEnd.例3.6用“*”號打印出如下的長方形圖案。* * * *解: 上面給出的圖例共有4行,我們可以用一個循環控制行的變化; 在每行中又有9列,我們可以在前面控制行的循環中再套一個循環來控制列的變化。Pascal程序:Program ex36;Begin For a := 1 to 4 do外循環控制行的變化 Begin For b := 1 to 9 do內循環控制列的變化 write(*); Writeln;輸出一行的“*”后換行End;Readln;End.程序中的循環對于a的每個值都包含著一個b=(19)次的內循環。外循環for a 將內循環for b 包含在里面,稱為for循環的嵌套。嵌套形式如: for a:=n1 to n2 do for b:=m1 to m2 do 循環體語句; 例3.7 打印出九九乘法表:解:設a為被乘數,范圍為19;b為乘數,范圍為1a;乘式為a*b=(a,b的乘積),則 a=1: b=1a 1*1=1 a=2: b=1a 2*1=2 2*2=4 a=3: b=1a 3*1=3 3*2=6 3*3=9 a=4: b=1a 4*1=4 4*2=8 4*3=13
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高效節能電機項目可行性研究報告(參考范文)
- 文明工地管理制度
- 2025年濕法稀磷酸項目建議書
- 異步電機控制策略
- 2025年智能電網配電設備項目建議書
- 2025年互聯網醫療平臺在線問診平臺與患者健康檔案管理對接報告
- 2025年工業碳捕獲與封存(CCS)技術在節能減排中的應用案例研究
- 基于大數據的2025年智慧交通流量預測模型構建與分析報告
- 2025年綠色藥品生產技術現狀與市場推廣路徑研究報告
- 城市污水處理廠智能化升級改造中的能源管理優化策略報告
- 惠普爾養障體肺炎診療要點解析
- 2025年全國工會系統經審業務技能大賽知識總題庫(1800題)-中部分
- 八年級歷史下冊期末復習測試卷(含答案)2024-2025學年人教版
- 康養醫養中心建設項目可行性研究報告
- 信息安全應急預案演練腳本
- DB11-509-2017房屋建筑修繕工程定案和施工質量驗收規程
- (高清正版)JJF(浙)1162-2019空氣熱老化試驗設備校準規范
- 國家開放大學《中國古代文學(B)(1)》章節測試參考答案
- 廣州市小學六年級上英語單詞(含音標)
- 法蘭基礎知識.ppt課件
- 無機化學第4版下冊(吉大宋天佑)2019
評論
0/150
提交評論