Pascal_講課稿_第1頁(yè)
Pascal_講課稿_第2頁(yè)
Pascal_講課稿_第3頁(yè)
Pascal_講課稿_第4頁(yè)
Pascal_講課稿_第5頁(yè)
已閱讀5頁(yè),還剩74頁(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、Pascal語(yǔ)言上課筆記2011-12臨沂一中專用(勿外傳)第一節(jié) Pascal 程序與上機(jī)調(diào)試一、程序的組成例題:10個(gè)同學(xué)每人買(mǎi)兩本書(shū),每本書(shū)的價(jià)格分別是a元和b元,計(jì)算一共需要多少元錢(qián)。參考程序:輸入兩個(gè)整數(shù)program sum1; /程序首部。 程序名:0001001sum1.pasconst /程序說(shuō)明部分,定義常量maxn為10; maxn=10; var a,b,c:integer; /程序說(shuō)明部分,a、b、c被說(shuō)明為整型變量。begin /程序執(zhí)行部分,下面是程序的內(nèi)容。 write(a=); /在屏幕上輸出一個(gè)字符串“a=”,輸出完后不換行。read(a); /從鍵盤(pán)輸入一

2、個(gè)數(shù)值賦給變量awrite(b=); read(b);c:=maxn*(a+b); /將a和b的和賦值給變量cwriteln(,a,+,b, ), *,maxn, =,c); /輸出a+b=c的等式,輸出完后換行end. /程序結(jié)束FreePascal 常用快捷鍵:打開(kāi)一個(gè)已有文件 ( Open ):F3保存正在編輯的文件 ( Save ):F2編譯程序 ( Compile ):Alt + F9 運(yùn)行程序 ( Run ):Ctrl + F9查看程序運(yùn)行結(jié)果:Alt + F5注:完整的PASCAL程序框架program 程序名(程序參數(shù)表); label 標(biāo)號(hào)說(shuō)明; const 常量說(shuō)明; ty

3、pe 類型說(shuō)明; var 變量說(shuō)明; function 函數(shù)說(shuō)明; procedure 過(guò)程說(shuō)明; begin 程序語(yǔ)句; end.在Free Pascal 中可省程序參數(shù)表。在程序執(zhí)行部分使用的標(biāo)號(hào)、常量、類型、變量、記錄、文件、過(guò)程和函數(shù),都必須在說(shuō)明部分進(jìn)行說(shuō)明。但并不是每個(gè)程序都必需的,根據(jù)需要而設(shè)。程序執(zhí)行部分是指Begin開(kāi)始到最后一條End. 結(jié)束語(yǔ)句的部分,是程序的核心。它由一系列語(yǔ)句組成,語(yǔ)句之間用“;”隔開(kāi),允許一行寫(xiě)多個(gè)語(yǔ)句,也允許一個(gè)語(yǔ)句寫(xiě)成幾行。一般情況下一行只寫(xiě)一個(gè)語(yǔ)句。第二節(jié) 常量、變量和數(shù)據(jù)類型一、常量1、常量:在程序運(yùn)行的整個(gè)過(guò)程中其值不能發(fā)生變化的量。2、常

4、量定義:常量定義出現(xiàn)在說(shuō)明部分。格式如下: const /這種方式定義的常量在整個(gè)程序中不可以改變。 manx=1000; /常量定義賦值時(shí)用等號(hào),即“=”,而不是“:=” 。 pi=3.1415926;3、常量定義部分必須以保留字開(kāi)頭,可以包含一個(gè)或多個(gè)常量定義,而且每個(gè)常量定義均以分號(hào)結(jié)束。二、變量1、變量定義:在程序的運(yùn)行過(guò)程中其值可以發(fā)生改變的量。它具有以下三個(gè)要素:變量名、變量類型和變量值。2、變量說(shuō)明 變量定義出現(xiàn)在說(shuō)明部分。格式如下: var 變量名列表:類型; 變量名列表:類型; 實(shí)例: var a,b,c:integer; m:char; x,y:real; i,j:Bool

5、ean;3、變量名 自己命名一個(gè)適合的標(biāo)識(shí)符。4、變量類型 程序在執(zhí)行時(shí),每個(gè)變量都要有相應(yīng)的值;類型不一樣,值也就不一樣。5、注意: Pascal 語(yǔ)言中規(guī)定,在程序中使用的變量必須是:先定義后使用。否則,程序編譯時(shí)會(huì)提示:Identifier not found XXX 意思是:變量XXX不識(shí)別。三、數(shù)據(jù)類型1、數(shù)據(jù)是程序設(shè)計(jì)的一個(gè)重要內(nèi)容,其重要特征數(shù)據(jù)類型,確定了該數(shù)據(jù)的形、取值范圍以及所能參與的運(yùn)算。在Pascal語(yǔ)言中,無(wú)論常量還是變量必須屬于一個(gè)確定的數(shù)據(jù)類型。Pascal的數(shù)據(jù)類型,按它的特點(diǎn)可分為三大類,如下圖所示:簡(jiǎn)單類型特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單,不能被分解成為其它類型;結(jié)構(gòu)類型特點(diǎn)

6、是構(gòu)造類型,一般由其它數(shù)據(jù)類型按照一定的規(guī)則組合而成;指針類型具有特殊性,主要用于動(dòng)態(tài)數(shù)據(jù)處理。簡(jiǎn)單類型中的整型、實(shí)型、字符型和布爾型是標(biāo)準(zhǔn)類型,枚舉型和子界型是用戶自定義類型的非標(biāo)準(zhǔn)型。所謂標(biāo)準(zhǔn)類型是指它已由Pascal語(yǔ)言預(yù)告定義,用戶可以直接引用的數(shù)據(jù)類型。在這些數(shù)據(jù)類型中簡(jiǎn)單類型都是有序類型,除了實(shí)型以外的簡(jiǎn)單類型都是順序類型,所謂順序類型就是他們的值不僅是有序的而且是有順序號(hào)。2、下面主要介紹整型、實(shí)型、字符型和布爾型四種常用的數(shù)據(jù)類型。(1)、整型 一個(gè)整型數(shù)據(jù)用來(lái)存放整數(shù)。Free Pascal支持七種預(yù)定義整型,它們是shortint(短整型)、integer(整型)、 lon

7、gint(長(zhǎng)整型)、 byte(字節(jié)型)、 word(字類型)、int64和qword,F(xiàn)ree Pascal分別用相應(yīng)的名字作為他們的標(biāo)識(shí)符。每一種類型規(guī)定了相應(yīng)的整數(shù)取值范圍以及所占用的內(nèi)存字節(jié)數(shù)。Free Pascal 語(yǔ)言預(yù)定義了兩個(gè)整型常量標(biāo)識(shí)符:maxint 和 maxlongint ,它們各表示確定的常數(shù)值,maxint為32767,maxlongint為2147483647,它們的類型分別是integer和longint 。如下表所示:類 型數(shù)值范圍占字節(jié)數(shù)二進(jìn)制位數(shù)shortint-128 1271帶符號(hào)8位byte0 2551不帶符號(hào)8位word0 655352不帶符號(hào)16

8、位integer-32768 327672帶符號(hào)16位longint-2147483648 21474836474帶符號(hào)32位int64-9223372036854775808 92233720368547758078帶符號(hào)64位qword0 184467440737095516158不帶符號(hào)64位(2)、實(shí)型Free Pascal 語(yǔ)言支持五種預(yù)定義實(shí)型,它們是:real(實(shí)型)、single(單精度實(shí)型)、 double(雙精度實(shí)型)、 comp(裝配實(shí)型)、 extended(擴(kuò)展實(shí)型)。每一種類型規(guī)定了相應(yīng)的實(shí)數(shù)取值范圍、所占用的內(nèi)存字節(jié)數(shù)以及它們所能達(dá)到的精度。如下表所示:類 型數(shù)值

9、范圍占字節(jié)數(shù)有效位數(shù)real2.9e-39 1.7e3861112single1.5e-45 3.4e38478double5.0e-324 1.7e30881516comp-263+1 263-181920extended3.4e-4932 1.1e4932101920實(shí)型常量包括正實(shí)數(shù)、負(fù)實(shí)數(shù)和實(shí)數(shù)0 。Free Pascal 語(yǔ)言中表示實(shí)型常量的形式通常有兩種:、十進(jìn)制表示法這是我們最熟悉也最常用的帶小數(shù)點(diǎn)的表示方法,要求小數(shù)點(diǎn)前后必須有數(shù)字,如0.0、-0.0、+5.61、-8.0、-6.050等都是實(shí)型常量,而0.、.012等形式都不合法。、科學(xué)記數(shù)法科學(xué)記數(shù)法是采用指數(shù)形式的表示方

10、法,如1.25×105可以表示成1.25E+05。其中E表示10這個(gè)底數(shù),而E之前為一個(gè)十進(jìn)制表示的小數(shù),稱為尾數(shù),E之后必須為一個(gè)整數(shù),稱為“指數(shù)”。合 法:-1234.56E+26、+0.268E-5、1E5不合法:.34E12、2.E5、E5、E、1.2E+0.5注意:實(shí)數(shù)運(yùn)算比整數(shù)速度慢并且無(wú)法像整數(shù)那樣精確表示,只能近似表示。(3)、布爾型(boolean)一個(gè)布爾型數(shù)據(jù)用來(lái)存放邏輯值(布爾值),布爾型的值只有兩個(gè):false假、true真。(4)、字符型(char)字符型只允許單引號(hào)中有一個(gè)字符,否則就是字符串(string)。也就是我們信息技術(shù)課本中講的那個(gè)ASCII碼

11、。如A、y、9、0調(diào)試如下程序,看結(jié)果如何?program aa; /程序名:0001002shujuleixing.pasvar a,b:integer; c,d:real; m,n:boolean; ch:char; begin a:=10; b:=55; writeln(a=,a, , b=,b); c:=(a+200)/b; writeln(c=,c); writeln(c=,c:10:2); /這種輸出方式叫場(chǎng)寬控制,如果不使用,默認(rèn)方式是科學(xué)記數(shù)法輸出。 ch:=R; writeln( ch=,ch); m:=5>6; n:=10>9; writeln( m=,m, ,

12、 n= ,n);end. 第三節(jié) 表達(dá)式與常用函數(shù)一、賦值語(yǔ)句1、格式:變量名:=表達(dá)式;或 函數(shù)名:=表達(dá)式;如:X:=5; X:=X+1; 此句的意義是:把變量X的值加1后再賦給X,即執(zhí)行完此句后的變量X的值,是執(zhí)行該句前變量X的值加1之后的結(jié)果。2、注意:(1)” := “ 稱為賦值號(hào),不要與 ” = “ 混淆。賦值有方向性,左邊只能是變量,不能是表達(dá)式,如 x := 1是非法的。(2)賦值號(hào)兩邊的類型必須相同,但是整型表達(dá)式可以賦值給實(shí)型,反之不成立。(3)一個(gè)賦值語(yǔ)句只能給一個(gè)變量賦值,變量可以賦值多次,但只保留最后一次的值。(4)被賦值的變量可以作為表達(dá)式因子參與運(yùn)算,如: i:=

13、i+1;是合法的。(5)對(duì)變量的賦值是對(duì)變量的存入訪問(wèn)。如d:=a;語(yǔ)句執(zhí)行后,d的變量?jī)?nèi)容就已經(jīng)是a變量的內(nèi)容,但是a變量的值并沒(méi)有消失與改變。 (6)、在實(shí)際編程中,我們經(jīng)常使用a:=a+1;作為計(jì)數(shù)器,用s:=s+x;作為累加器,用t:=t*n;作為累乘器。二、Pascal 常用函數(shù)庫(kù)1、正常書(shū)寫(xiě)標(biāo)準(zhǔn)函數(shù)名和調(diào)用的參數(shù)。2、每個(gè)函數(shù)對(duì)自變量的數(shù)據(jù)類型都有一定的要求。如奇函數(shù):Odd (x),函數(shù)的結(jié)果為布爾型。當(dāng)X為奇數(shù)時(shí),函數(shù)值為true;當(dāng)X為偶數(shù)時(shí),函數(shù)值為false。例如: Odd (13)= True Odd (16)= False3、函數(shù)值的類型也是一定的。算術(shù)運(yùn)算函數(shù)函數(shù)名

14、標(biāo)識(shí)符說(shuō)明示例絕對(duì)值函數(shù)abs(x)取變量X的絕對(duì)值abs (101)=101平方函數(shù)sqr()求X的平方sqr(-5)=25平方根函數(shù)sqrt()求X的平方根sqrt(16)=4正弦函數(shù)sin(x)正弦函數(shù),X為弧度數(shù)sin(1)=0.845余弦函數(shù)cos(x)余弦函數(shù),X為弧度數(shù)cos(1)=0.540反正切函數(shù)arctan(x)反正切函數(shù),返回值為弧度數(shù)arctan(1)=0.784自然指數(shù)函數(shù)exp(x)求X的自然指數(shù),exexp(1)=2.718282exp(y*lnx)求X的Y次冪,XY ,結(jié)果為實(shí)形。Exp(4*ln(3)=81自然對(duì)數(shù)函數(shù)ln(x)求X的自然對(duì)數(shù)ln(

15、1)=0隨機(jī)函數(shù)random(x)隨機(jī)函數(shù):無(wú)自變量時(shí),函數(shù)值為0,1)間的隨機(jī)小數(shù);X為整數(shù)時(shí),取0,X)之間的隨機(jī)整數(shù);在調(diào)用隨機(jī)函數(shù)之前,應(yīng)該使用randomize過(guò)程進(jìn)行初始化,生成一個(gè)隨機(jī)序列,否則產(chǎn)生的數(shù)都一樣。示例程序:program cimi; /程序名:0001003zhishucimi.pasvar / /求i的j次冪 結(jié)果為實(shí)型。 i,j:integer; c:real;begin read(i,j); c:=exp(j*ln(i); writeln(c:10:2);gram suijihanshu; /程序名:0001004suijihanshu.pas

16、var / 如何使用隨機(jī)函數(shù)。 i,j:integer;begin randomize; for i:=1 to 10 do begin j:=random(100); write(j:5); end;end. 算術(shù)運(yùn)算過(guò)程過(guò)程名標(biāo)識(shí)符說(shuō)明加1inc(i)使i:=i+1加binc(i,b)使i:=i+b減1dec(i)使i:=i-1減bdec(i,b)使i:=i-b轉(zhuǎn)換函數(shù)函數(shù)名標(biāo)識(shí)符說(shuō)明示例取整函數(shù)int(x)返回X的整數(shù)部分,結(jié)果為實(shí)型int (10.67)=10取小數(shù)函數(shù)frac(x)返回X的小數(shù)部分frac(10.67)=0.67截尾函數(shù)trunc(x)截取X的整數(shù)部分,結(jié)果

17、為長(zhǎng)整型trunc (10.67)=10舍入函數(shù)round(x)對(duì)X進(jìn)行四舍五入,結(jié)果為長(zhǎng)整型round (10.67)=11奇偶函數(shù)odd(x)X為奇數(shù)時(shí),函數(shù)值為true;否則,為falseodd(-101)=trueodd(256)=false序數(shù)函數(shù)ord(x)函數(shù)值為自變量對(duì)應(yīng)的序號(hào)ord(a)=97字符函數(shù)chr(x)X表示ASCII值,即字符序號(hào),函數(shù)值為對(duì)應(yīng)的字符。chr(97)= a大寫(xiě)字母函數(shù)upcase(x)使小寫(xiě)字母變成大寫(xiě)upcase(a)= A順序函數(shù)函數(shù)名標(biāo)識(shí)符說(shuō)明示例前趨函數(shù)pred(x)求X的前驅(qū),也就是前一個(gè)pred(y)= x后續(xù)函數(shù)succ()求X的后繼

18、,也就是后一個(gè)succ(y)= z4、Pascal語(yǔ)言中的表達(dá)式是由符合Pascal語(yǔ)法規(guī)定的運(yùn)算符、圓括號(hào)和運(yùn)算對(duì)象組成,運(yùn)算對(duì)象包括常量、變量、函數(shù)、集合等。根據(jù)表達(dá)式計(jì)算值的類型,表達(dá)式可分為算術(shù)表達(dá)式、邏輯表達(dá)式、字符表達(dá)式和集合表達(dá)式。(1)、算術(shù)運(yùn)算符運(yùn)算符運(yùn)算運(yùn)算對(duì)象結(jié)果類型+ 加整型、實(shí)型只要有一個(gè)運(yùn)算對(duì)象是實(shí)型,結(jié)果就是實(shí)型,如果全部的運(yùn)算對(duì)象都是整型并且運(yùn)算不是除法,則結(jié)果為整型,若運(yùn)算是除法,則結(jié)果是實(shí)型- 減整型、實(shí)型* 乘整型、實(shí)型/ 除整型、實(shí)型div 整除整型 整型mod 取余(取模)整型 整型(2)、邏輯運(yùn)算符、布爾型邏輯運(yùn)算參與邏輯運(yùn)算的操作數(shù)均為布爾型,運(yùn)算

19、結(jié)果也是布爾型。其中:not 只要求一個(gè)操作數(shù),是單目運(yùn)算符,而and、or 、xor 要有兩個(gè)操作數(shù)。ABnot AA and BA or BA xor Btruetrueflasetruetrueflasetrueflaseflaseflasetruetrueflasetruetrueflasetruetrueflaseflasetrueflaseflaseflase、二進(jìn)制數(shù)邏輯運(yùn)算參與邏輯運(yùn)算的操作數(shù)均為整型,運(yùn)算結(jié)果也是整型。然后,在計(jì)算機(jī)內(nèi)的數(shù)據(jù)是以二進(jìn)制數(shù)方式存放的,邏輯運(yùn)算時(shí)按整型數(shù)的二進(jìn)制數(shù)的每位實(shí)現(xiàn)邏輯運(yùn)算,運(yùn)算結(jié)果表示表示成整型。每位邏輯運(yùn)算的真值表如上表,只是true

20、為二進(jìn)制數(shù)1,flase為二進(jìn)制數(shù)0,二進(jìn)制位運(yùn)算如下表。運(yùn)算符操作說(shuō)明示例and二進(jìn)制按位與10 and 7=2or二進(jìn)制按位或10 or 7=15xor二進(jìn)制按位異或10 xor 7=13shl二進(jìn)制左移2 shl 7=256shr二進(jìn)制右移8 shr 2=2 (3)、關(guān)系運(yùn)算符及比較運(yùn)算符(最低優(yōu)先級(jí)) 運(yùn)算符運(yùn)算運(yùn)算對(duì)象結(jié)果類型=等于簡(jiǎn)單類型布爾型<> 不等于簡(jiǎn)單類型布爾型<小于簡(jiǎn)單類型布爾型>大于簡(jiǎn)單類型布爾型<= 小于等于簡(jiǎn)單類型布爾型 >= 大于等于簡(jiǎn)單類型布爾型5、優(yōu)先級(jí):具體優(yōu)先順序:(1)、括號(hào)內(nèi)先算(2)、函數(shù)(3)、運(yùn)算符優(yōu)先順序 運(yùn)

21、算符優(yōu)先級(jí) not 1(高)*,/,div,mod,and 2xor,+,-,or 3in,=,<>,>=,<=,<> 4(低)(4)、同級(jí)運(yùn)算按從左到右的次序。綜合題例:program ab01; /綜合運(yùn)用 程序名:0001005zongheyunyong.pasvar in1,in2,in3,in4,in5,in6:integer; in11,in22,in33,in44,in55,in66:integer; re1,re2,re3,re4,re5,re6:real; re11,re22,re33,re44,re55,re66:real; x1,x2,

22、x3,x4,x5,x6:boolean; x11,x22,x33,x44,x55,x66:boolean; ch1,ch2,ch3,ch4,ch5,ch6:char; ch11,ch22,ch33,ch44,ch55,ch66:char;begin writeln('Please input 4 integer:'); read(in1,in2,in3,in4); writeln('abs(',in1,')=',abs(in1); writeln('sqr(',in2,')=',sqr(in2); writeln(

23、'sqrt(',in3,')=',sqrt(in3); writeln('sin(',in4,')=',sin(in4); writeln('Please input a integer,in5='); read(in5); if odd(in5) then writeln('odd(',in5,')=true') else writeln('odd(',in5,')=false'); randomize; in6:=random(100); writ

24、eln('in6=',in6); inc(in6,12); writeln('inc(in6+12)=',in6); writeln('plase input a integer:'); readln(in11); dec(in6,in11); writeln('in6-',in11,'=',in6); writeln('Please input a real,re1='); readln(re1); re2:=int(re1); re3:=trunc(re1); writeln('int(

25、',re1,')=',re2:10:2); writeln('trunc(',re1,')=',re3:0:3); writeln('ord(','A',')=',ord('A'); writeln('Please input a integer(0127):'); read(in33); writeln('ASCII=',in33,' de zifu shi ',chr(in33); readlnend.第四節(jié) 輸入、輸出語(yǔ)句

26、一、輸入語(yǔ)句1、read( < 變量名表 > ):2、readln( < 變量名表 > ):3、二者的區(qū)別:讀完相應(yīng)的變量表后,換不換行的問(wèn)題。說(shuō)明:()、變量名表由一個(gè)或多個(gè)由逗號(hào)隔開(kāi)的變量標(biāo)識(shí)符組成,它們必須在程序說(shuō)明部分預(yù)先說(shuō)明,可以是整型、實(shí)型、字符型,布爾型不能直接讀入。()、數(shù)據(jù)可從鍵盤(pán)讀入,也可以從文件讀入。()、readln可以不包含變量名表,下面是等價(jià)的。read(a,b); readln; 等價(jià)于readln(a,b); 調(diào)試下面的例子:變量說(shuō)明var a,b,c,d:integer;執(zhí)行結(jié)果abcd程序段一read(a);readln(b,c);r

27、ead(d);1236程序段二readln (a);read(b,c);read(d);1678數(shù)據(jù)輸入1 2 3 4 56 7 8調(diào)試程序:program shuru; /輸入語(yǔ)句練習(xí) 程序名:0001006shuru.pasuses crt; /uses crt與readkey成對(duì)使用,作用是程序運(yùn)行結(jié)果后,不返回編輯頁(yè)面,var /等看完結(jié)果再按一下鍵盤(pán)上的回車(chē)鍵再回到編輯頁(yè)面。 a,b,c,d:integer;begin read(a); readln(b,c); read(d); readln; writeln('a=',a:2,' b=',b:2,&

28、#39; c=',c:2,' d=',d:2); readln(a); read(b,c); read(d); writeln('a=',a:2,' b=',b:2,' c=',c:2,' d=',d:2); readkeyend. 此題輸入格式如下: 1 2 3 4 56 7 8此時(shí)按回車(chē)后出現(xiàn)結(jié)果,然后再輸入1 2 3 4 56 7 8然后對(duì)比兩組結(jié)果有什么不同,體會(huì)與理解兩種輸入格式的區(qū)別。二、輸出語(yǔ)句1、write(x):2、writeln(x ):3、二者的區(qū)別:輸出相應(yīng)的變量表后,換不換行的問(wèn)題

29、。說(shuō)明:()、輸出的內(nèi)容包括變量、引號(hào)括起的內(nèi)容、表達(dá)式。()、輸出場(chǎng)寬的控制。、x如果是實(shí)數(shù),不加控制,將按科學(xué)計(jì)數(shù)法輸出、單場(chǎng)寬、雙場(chǎng)寬、單引號(hào)中的內(nèi)容原樣輸出。4、調(diào)試下面的例子:程序代碼運(yùn)行結(jié)果程序段一write(I am a );write(student.);I am a student.程序段二writeln(I am a );write(student.);I am a student.調(diào)試程序:program shuchu; /輸出語(yǔ)句練習(xí) 程序名:0001007shuchu.pasbegin write('I am a '); write('stud

30、ent.'); writeln; /本句只是輸出換行,即換到下一行。 writeln('I am a '); write('student.');end.第五節(jié) 順序結(jié)構(gòu)程序設(shè)計(jì)一、順序結(jié)構(gòu)若程序按照語(yǔ)句的書(shū)寫(xiě)先后順序逐句執(zhí)行,直到程序的結(jié)束,這種結(jié)構(gòu)我們叫做順序結(jié)構(gòu)。該結(jié)構(gòu)最簡(jiǎn)單。如下Begin 語(yǔ)句1;語(yǔ)句2;語(yǔ)句n;End.注意:每條語(yǔ)句后面以分號(hào)“;”結(jié)束。例題1:隨機(jī)產(chǎn)生一個(gè)四位數(shù),并求出各位數(shù)字和。分析:(1)、定義六個(gè)變量,一個(gè)用于存放產(chǎn)生的四位數(shù),四個(gè)用于存放每一位(千、百、十、個(gè)位)上的那個(gè)數(shù)字,最后一個(gè)用于存放這四個(gè)數(shù)字的和。(2)、

31、隨機(jī)產(chǎn)生一個(gè)四位數(shù)。 要產(chǎn)生區(qū)間A,B之間的數(shù),表達(dá)式為A+random(B-A+1)。(3)、如何拆分一個(gè)數(shù)。 可以利用前面學(xué)過(guò)的兩個(gè)運(yùn)算符div和mod實(shí)現(xiàn)。程序如下:program feilisws; / 理解順序結(jié)構(gòu) 程序名:0001008shunxujiegou.pasvar number,a,b,c,d,s:integer;begin randomize; number:=1000+random(9000); /隨機(jī)產(chǎn)生一個(gè)四位數(shù)賦給變量number a:=number mod 10; /對(duì)number進(jìn)行各位數(shù)分離,a是個(gè)位上的數(shù)字 b:=number div 10 mod 10

32、; /b是十位上的數(shù)字 c:=number div 100 mod 10; /c是百位上的數(shù)字 d:=number div 1000; /d是千位上的數(shù)字 s:=a+b+c+d; writeln('number=',number); writeln(a, '+',b, '+',c, '+',d, '=',s); readlnend.例題2:交換兩個(gè)變量的值:由鍵盤(pán)輸入兩個(gè)正整數(shù)A和B,編程交換這兩個(gè)變量的值。解析:可以這樣理解,現(xiàn)在有兩個(gè)杯子,A里面裝有牛奶、B里面裝有果汁,如果要把A里面的牛奶倒入B里面,而B(niǎo)里面

33、的果汁倒入A里面,可以借助另外一個(gè)空杯子C,過(guò)程是這樣的:先把A里面的牛奶倒入C里面,再把B里面的果汁倒入A里面,最后把C里面的牛奶再倒入B里面。程序如下:program jiaohuan; /兩個(gè)變量的值交換 程序名:0001009jiaohuan.pasvar a,b,c:integer;begin write('a,b='); read(a,b); writeln('yuan a=',a); writeln('yuan b=',b); c:=a; a:=b; b:=c; writeln('xin a=',a); writel

34、n('xin b=',b);end.例題3:分錢(qián)游戲。甲、乙、丙三人共有24元錢(qián),先由甲分錢(qián)給乙、丙兩人,所分給的數(shù)與各人已有數(shù)相同;接著由乙分給甲、丙,分法同前;再由丙分錢(qián)給甲、乙,分法亦同前。經(jīng)上述三次分錢(qián)之后,每個(gè)人的錢(qián)數(shù)恰好一樣多。 求原先各人的錢(qián)數(shù)分別是多少?解析:設(shè)甲、乙、丙三人的錢(qián)數(shù)分別為A,B,C。用倒推(逆序)算法, 從最后結(jié)果入手,按反相順序,分步驟推算出每次各人當(dāng)時(shí)的錢(qián)數(shù):(在每個(gè)步驟中,各人錢(qián)數(shù)分別存在A、B、C中)  步驟:A=8 B=8 C=8        這是最后結(jié)果的錢(qián)數(shù),三

35、人都一樣多   步驟:A=A/2 (=4)     B=B/2 (=4)     C=A+B+C(=16)     A,B未得到丙分給的錢(qián)時(shí),只有結(jié)果數(shù)的一半;C應(yīng)包含給A,B及本身數(shù)三者之和   步驟:A=A/2 (=2)     C=C/2 (=8)     B=A+B+C(=14)      A,C未得到乙分給的錢(qián)時(shí),只有

36、巳有數(shù)的一半;B應(yīng)包含給A,C及本身數(shù)三者之和   步驟: B=B/2 (=7)     C=C/2 (=4)     A=A+B+C(=13)  B、 C未得到甲分給的錢(qián)時(shí),只有巳有數(shù)的一半;A應(yīng)包含給B,C及本身數(shù)三者之和   步驟: 輸出A(=13)B(=7)C(=4)此時(shí)的A,B,C 就是三人原先的錢(qián)數(shù) 甲(A)乙(B)丙(C)最后每人錢(qián)數(shù)888丙分之前4416乙分之前2148甲分之前1374細(xì)心觀察,會(huì)發(fā)現(xiàn)本程序語(yǔ)句的順序很關(guān)鍵。此例用反推順序(逆序),按步驟正確推

37、算出各變量的值。當(dāng)然,有的問(wèn)題可按正序步驟編程,這類程序都稱為順序程序。程序如下:program fen_money; /分錢(qián)游戲 程序名:0001010fenqian.pasvar a,b,c:integer;begin a:=8;b:=8;c:=8; 對(duì)應(yīng)于步驟 a:=a div 2;b:=b div 2;c:=a+b+c; 對(duì)應(yīng)于步驟 a:=a div 2;c:=c div 2;b:=a+b+c; 對(duì)應(yīng)于步驟 b:=b div 2;c:=c div 2;a:=a+b+c; 對(duì)應(yīng)于步驟 writeln('a=',a,' ':4,'b=',b,

38、' ':4,'c=',c); 輸出 readlnend. 例題4:輸入x,y。若在圓環(huán)內(nèi),輸出true,若在圓環(huán)外;輸出false。圓環(huán)如圖所示。討論:如圖所示,若式子1x2+y24成立,則在圓環(huán)內(nèi),否則在圓環(huán)外。設(shè)布爾變量bool,當(dāng)x,y在圓環(huán)內(nèi)時(shí),讓它取值為true,否則取值為false。其中 “點(diǎn)(x,y)若在圓環(huán)內(nèi)”的表達(dá)式:(x2+y212)且(x2+y222) 程序如下:program yuanhuandian; /點(diǎn)是否在圓環(huán)內(nèi) 程序名:0001010yuanhuan.pasvar x,y :real; bool:boolean;begin wr

39、iteln; write('x='); readln(x); write('y='); readln(y); bool:=(x*x+y*y>=1) and (x*x+y*y<=4); write(bool); readln;end.例題5:輸入一個(gè)字符,求其序號(hào)、前導(dǎo)(即前一字符)、后繼(即后一字符)。程序如下:program pred_succ; /求字符的前驅(qū)與后繼 程序名:0001012predsucc.pasvar ch,pch,sch:char; num:integer;begin writeln; write('please in

40、put a character:'); readln(ch); write('pred_ch:',pred(ch),' succ_ch:',succ(ch),' num:',ord(ch); readln();end./ 測(cè)試時(shí),可以刪除倒數(shù)第二條語(yǔ)句readln();后,執(zhí)行情況有何不同?練習(xí)題: 1、輸入圓的半徑r,計(jì)算圓的周長(zhǎng)和面積。2、寫(xiě)一程序讀入三角形的三個(gè)邊a,b,c,計(jì)算并打印三角形的面積S??衫孟铝泄接?jì)算。 其中 3、輸入一個(gè)三位整數(shù),將它們反向輸出。例如輸入139,輸出應(yīng)為931。第六節(jié) 選擇結(jié)構(gòu)程序設(shè)計(jì)一、復(fù)合語(yǔ)句

41、復(fù)合語(yǔ)句的一般形式:begin 語(yǔ)句1;語(yǔ)句2;語(yǔ)句n;end.在這里,begin與end起語(yǔ)句括號(hào)的作用,相當(dāng)于使用了一個(gè)語(yǔ)句括號(hào)將若干語(yǔ)句括了起來(lái),看作一句運(yùn)行。程序運(yùn)行時(shí),通常是按書(shū)寫(xiě)的順序去執(zhí)行復(fù)合語(yǔ)句的各個(gè)語(yǔ)句。常用在程序中的固定位置。比如選擇與循環(huán)語(yǔ)句中某個(gè)標(biāo)識(shí)符的后面。二、條件語(yǔ)句(if語(yǔ)句)1、格式(1)、if 條件表達(dá)式 then 語(yǔ)句;(2)、if 條件表達(dá)式 then 語(yǔ)句1 else 語(yǔ)句2;對(duì)于格式(1):在條件為真時(shí),執(zhí)行THEN后的語(yǔ)句。在條件為假時(shí),不執(zhí)行THEN后的語(yǔ)句,在兩種情況下的后繼語(yǔ)句都是IF語(yǔ)句的下一個(gè)語(yǔ)句。對(duì)于格式(2):其中“條件表達(dá)式”實(shí)際上是

42、一個(gè)布爾表達(dá)式,它的值可以是真(true)或假(false)。在條件為真時(shí),執(zhí)行語(yǔ)句1,否則(條件為假)執(zhí)行語(yǔ)句2。2、功能: (1)、格式1的if 語(yǔ)句的執(zhí)行標(biāo)準(zhǔn)是:若條件表達(dá)式的條件為真,則執(zhí)行then后面的語(yǔ)句,當(dāng)條件不成立時(shí),退出if結(jié)構(gòu),去執(zhí)行if語(yǔ)句后面的語(yǔ)句。(2)、格式2的if 語(yǔ)句的執(zhí)行標(biāo)準(zhǔn)是:若條件表達(dá)式的條件為真,則執(zhí)行then后面的語(yǔ)句1,否則執(zhí)行后面的語(yǔ)句2。要特別注意else前面的語(yǔ)句1最后不能有分號(hào),因?yàn)榉痔?hào)是兩個(gè)語(yǔ)句之間的分隔符,而else并非語(yǔ)句,如果在此處添加了分號(hào),則在編譯時(shí)就會(huì)認(rèn)為if 語(yǔ)句到此結(jié)束,而把else當(dāng)做另一句的開(kāi)頭,輸出出錯(cuò)信息。如果語(yǔ)句1

43、和語(yǔ)句2有內(nèi)容不是一個(gè)語(yǔ)句,而是多個(gè)語(yǔ)句,此時(shí)要有復(fù)合語(yǔ)句,即用begin和end括起來(lái)。例題1:輸入兩個(gè)數(shù)a、b,將它們由小到大輸出。程序如下:program max00; /兩個(gè)數(shù)按由小到大順序輸出 程序名:0001013if_daxiao.pasvar a,b,t:integer;begin read(a,b); if a>b then begin /如果第一個(gè)數(shù)大于第二個(gè)數(shù),則兩個(gè)數(shù)互換。 t:=a;a:=b;b:=t; end; writeln(a,' ',b);end.說(shuō)明:本題程序中紅色標(biāo)出的程序段,看看換成下面的語(yǔ)句有什么區(qū)別?if a>b then

44、 writeln(b,' ',a) else writeln(a,' ',b);例題2:輸入一個(gè)三位數(shù),將數(shù)字位置重新排列,組成一盡可能大的三位數(shù)。分析:利用運(yùn)算符div和mod分離數(shù)字,然后確定三個(gè)數(shù)字的大小順序,最后重新組成一個(gè)新的三位數(shù)。程序如下:program sanweishu; /重組三位數(shù) 程序名:0001014sanweishu.pasvar t,a,b,c,n:integer;begin read(n); a:=n div 100; b:=n div 10 mod 10; c:=n mod 10; if a<b then begin t:

45、=a;a:=b;b:=t; end; if a<c then begin t:=a;a:=c;c:=t; end; if b<c then begin t:=b;b:=c;c:=t; end; n:=100*a+10*b+c; writeln(n);end.例題3:托運(yùn)行李火車(chē)托運(yùn)行李,要根據(jù)行李的重量按不同標(biāo)準(zhǔn)收費(fèi)。例如不超過(guò)50kg,按每公斤0.35元收費(fèi)。若超過(guò)50kg,則其中50kg按每公斤0.35元收費(fèi),其余超過(guò)部分按每公斤0.50元收費(fèi)?,F(xiàn)輸入托運(yùn)行李重量,要求計(jì)算并輸出托運(yùn)費(fèi)。說(shuō)明:數(shù)學(xué)建模:設(shè)托運(yùn)行李重量為weight,該問(wèn)題要求根據(jù)weight是否超過(guò)50,按不同

46、公式計(jì)算出托運(yùn)費(fèi)。設(shè)托運(yùn)費(fèi)為pay。weight和pay均為實(shí)型。算法如下:(1)、讀入weight的值。(2)、根據(jù)weight的大小選擇不同的公式計(jì)算pay。(3)、輸出pay。公式如下: pay = weight * 0.35 weight50 50 * 0.35 + (weight 50) * 0.50 weight>50程序如下:program tuoyun; /火車(chē)托運(yùn)費(fèi)用計(jì)算 程序名:0001015tuoyun.pasvar weight,pay:real;begin write('weight='); readln(weight); if weight&l

47、t;=50 then pay:=0.35*weight else pay:=0.35*50+0.5*(weight-50); writeln('pay=',pay:6:2);end.3、嵌套:if語(yǔ)句可以多層嵌套。嵌套時(shí)為了避免誤解,可以用begin ,end括起嵌套部分,構(gòu)成一個(gè)復(fù)合語(yǔ)句,從外部看來(lái)就相當(dāng)于一個(gè)語(yǔ)句;else分句一般和最近的if分句配套: if 條件 then begin if 條件1 then else ; end else begin if 條件2 then else ; end;if 條件語(yǔ)句后面的then 和else后都可以跟if 語(yǔ)句,也可以只一個(gè)語(yǔ)

48、句跟if 語(yǔ)句,右圖就是一種情況:例題:有一個(gè)函數(shù)表達(dá)式如下:編寫(xiě)程序,輸入x,輸出y的值。程序如下:program daxiaoyuling; /大于小于等于0 程序名:0001016daxiaoyuling.pasvar x:real; y:integer;begin write('please input x='); readln(x); if x<0 then y:=-1 else if x>0 then y:=1 else y:=0; writeln('y=',y);end.三、分支語(yǔ)句(case語(yǔ)句)1、格式case語(yǔ)句又稱分情況(分支)

49、語(yǔ)句,格式如下:case表達(dá)式 of 標(biāo)號(hào)1:語(yǔ)句1; 標(biāo)號(hào)2:語(yǔ)句2; 標(biāo)號(hào)n:語(yǔ)句n; <else 語(yǔ)句n+1> /可選項(xiàng),即此句可有可沒(méi)有end;2、功能(1)、先計(jì)算表達(dá)式的值,注意:這個(gè)表達(dá)式中不能含有int 、round等函數(shù),表達(dá)式的值不能是實(shí)數(shù)。(2)、然后用表達(dá)式的值依次與各標(biāo)號(hào)進(jìn)行對(duì)照,當(dāng)找到一個(gè)與測(cè)試表達(dá)式的值相匹配的標(biāo)號(hào)后,就去執(zhí)行該case標(biāo)號(hào)后相應(yīng)的語(yǔ)句塊,然后跳到與case相對(duì)應(yīng)的end后面的語(yǔ)句繼續(xù)執(zhí)行。(3)、如果找不到與之匹配的標(biāo)號(hào)(若有else則執(zhí)行它后面的語(yǔ)句),退出case語(yǔ)句,執(zhí)行它后面的語(yǔ)句。(4)、end與case對(duì)應(yīng);標(biāo)號(hào)與語(yǔ)句之間

50、用“:”分隔;else與語(yǔ)句之間不用分隔符。(5)、標(biāo)號(hào)必須是一常量,其類型與表達(dá)式的類型一致(6)、可以多個(gè)標(biāo)號(hào)對(duì)應(yīng)同一條語(yǔ)句 (7)、每個(gè)標(biāo)號(hào)后面的語(yǔ)句可以是多條語(yǔ)句,但必須用復(fù)合語(yǔ)句 (beginend)括起來(lái)例題1:“自己加”或“協(xié)助加”兩個(gè)服務(wù)等級(jí),這樣用戶可以得到5%或10%的優(yōu)惠。編一個(gè)程序,用戶輸入加油量、汽油品種和服務(wù)類型(f-自動(dòng),m-自己,e-協(xié)助),然后計(jì)算應(yīng)付款。程序如下:program pcase1; /分支語(yǔ)句加油 程序名:0001017case_oil.pasvar oil,help:char; kg,total:real;begin write('En

51、ter the amount in kilograms(kg):'); readln(kg); write('Which type of the gasoline(a,b,c):'); readln(oil); write('Which type for service(f,m,e):'); readln(help); case oil of /處理汽油的類型 'a': total:=1.50*kg; 'b': total:=1.35*kg; 'c': total:=1.18*kg; else writel

52、n('Input Error!') end; case help of /處理服務(wù)類型 'f':; 'm': total:=total*(1-0.05); 'e': total:=total*(1-0.10); else writeln('Input Error!') end; writeln; writeln('Total is ',total:10:2);end.例題2:從鍵盤(pán)上讀入年和月,輸出該月有多少天。討論:每年的1、3、5、7、8、10、12月,每月有31天;4、6、9、11月,每月有30天;2月閏年有29天,平年有28天。年號(hào)能被4整除,但不能被100

溫馨提示

  • 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)論